Есть ли способ создать несколько индексов в LARQ и выполнить по ним SPARQL - PullRequest
2 голосов
/ 08 сентября 2011

Я хочу индексировать два разных OntModel и выполнять над ними запросы sparql. Например:

String query = "PREFIX fise: <http://fise.iks-project.eu/ontology/>\n"
                   + "PREFIX pf: <http://jena.hpl.hp.com/ARQ/property#>\n"
                   + "PREFIX skos:   <http://www.w3.org/2004/02/skos/core#>\n"
                   + "SELECT distinct ?def\n" + "WHERE {\n"
                   + "  ?item a skos:Concept .\n"
                   + "  ?item skos:definition ?def.\n"
                   + "  (?label ?score)  pf:textMatch 'someKeyword'. \n"
                   + "};

ResultSet result = QueryExecutionFactory.create(query, ontModel1).execSelect();
ResultSet result2 = QueryExecutionFactory.create(query, ontModel2).execSelect();

Как мне создать разные индексы для двух моделей? В конце концов, мне нужно запросить две ont модели с использованием функций LARQ.

Насколько я понимаю, чтобы иметь возможность использовать функции lucene при выполнении SPARQL, нам нужно реализовать код, подобный следующему.

IndexBuilderString larqBuilder = new IndexBuilderString();
larqBuilder.indexStatements(ontModel.listStatements());
IndexLARQ index = larqBuilder.getIndex();
LARQ.setDefaultIndex(index);

Но этот код позволяет установить один индекс. Кроме того, я не хочу объединять две модели. Есть концепция Concext, но я не понял, как ее использовать.

1 Ответ

1 голос
/ 13 сентября 2011

Кажется, что ответ регистрирует выполнение индексов для каждого запроса с использованием контекста запроса.

 QueryExecution qe = QueryExecutionFactory.create(query, model) ;
 LARQ.setDefaultIndex(qe.getContext(), index) ;
...