java - 有没有办法在 LARQ 中创建多个索引并对它们执行 SPARQL

标签 java lucene sparql jena arq

我想索引两个不同的 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 特征查询两个 ont 模型。

据我所知,要在执行 SPARQL 时能够使用 lucene 功能,我们需要实现如下代码。

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

但是这段代码允许设置单个索引。此外,我不想合并两个 ont 模型。有一个 Concext 概念,但我不知道如何使用它。

最佳答案

似乎答案是使用查询上下文为每次查询执行注册索引。

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

关于java - 有没有办法在 LARQ 中创建多个索引并对它们执行 SPARQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7349165/

相关文章:

java - 您将如何从命令行参数中拆分字符串? - java

search - 使用 Solr 实现搜索所有内容

java - 无法重绘我的 JFrame/JPanel

java - 1 台本地主机上 2 台 Virtual Box 计算机之间的 TCP 连接

java - 用于组广播的 JMS 架构

lucene - 2.3.1创建的lucene索引是否兼容Lucene 3.0.3

elasticsearch - Elasticsearch删除文档的处理

sparql - 如何使用 Python 确定两个 SPARQL 查询是否相同?

include - 包括来自单独文件的 sparql 子查询

SPARQL 查询未产生预期结果