Попытка получить ResultSet из исключения запроса CONSTRUCT - PullRequest
1 голос
/ 13 апреля 2011

Я пытаюсь использовать следующий запрос:

QUERY="PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> \n" +
            " PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> \n" +
                    "CONSTRUCT { \n" +
    "?cls ?cp ?co . \n" +
   " ?prop ?pp ?po . \n" +
"}" +
"WHERE { \n" +
    "?cls a rdfs:Class . \n" + 
    "?cls ?cp ?co .  \n" +
    "?prop a rdf:Property . \n" +
    "?prop ?pp ?po .  \n " + 
"}";

results = qe.execSelect();

Запрос находится в строковой переменной QUERY.
Я использую джену Все дело в интерфейсе, который имеет 2 кнопки. QUERY принимает запрос на выборку, когда пользователь нажимает кнопку1, и запрос выше, если пользователь нажимает кнопку2

Получите следующее исключение, если QUERY содержит обе конструкции и выберите
Исключение в потоке "AWT-EventQueue-0" com.hp.hpl.jena.query.QueryExecException: попытка получить ResultSet из запроса CONSTRUCT at com.hp.hpl.jena.sparql.engine.QueryExecutionBase.execSelect (QueryExecutionBase.java:93)

1 Ответ

4 голосов
/ 13 апреля 2011

CONSTRUCT запросов приводит к модели, а не к набору результатов. Вам необходимо использовать:

Model model = qe.execConstruct();

У вас не может быть запроса, который "содержит и конструкцию, и выбор". (разве вы имеете в виду конструкцию, содержащую суб-выбор?)

Может оказаться полезным следующее:

Query q = QueryFactory.create(QUERY);

if (q.isSelectType()) { ... execSelect, deal with results ... }
else if (q.isConstructType()) { ... execConstruct, deal with result model ... }
else { ... do you deal with DESCRIBE? ... }
...