java - 在 jena 中以通用方式查询 RDF 模型的最佳方法是什么? (sparql 或使用集合和迭代器)

标签 java rdf semantic-web jena

我想为我编译的 RDF 模型创建一个简单的通用查询接口(interface)。

我必须通过某种方式访问​​我的数据:

1-使用内置的jena迭代器/statemetns/资源/等....

2-创建一些SPARQL

但是为了创建 SPARQL 或 RDQL,我必须调用将 SPARQL 变量绑定(bind)到 java 变量,因为在我的 SPARQL 中我可以有各种数量的变量,但我不知道如何使其通用。

那么使 RDF 查询接口(interface)通用的最佳方法是什么?

最佳答案

使用 SPARQL,而不是 RDQL。如今大多数系统都实现 SPARQL,即 W3C 标准。使用 SPARQL,就像在 SQL 中一样,您可以使用 *绑定(bind)三重模式中出现的所有变量。示例:

SELECT * WHERE {
   ?s a :Person .
   ?s :name ?name .
   ?s :birthdate ?birthdate .
}

大多数 SPARQL 客户端库允许您获取所有变量。例如,在耶拿 ARQ 中,您会发现 QuerySolution有一个方法Iterator<String> varNames() ,此方法将返回所有变量名称。你可以遍历这些并使用方法get在同一个类中检索行值。

SPARQL 的巨大优势在于,由于它是一个标准,因此您可以使用遵循规范的不同三元组存储。

关于java - 在 jena 中以通用方式查询 RDF 模型的最佳方法是什么? (sparql 或使用集合和迭代器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10383692/

相关文章:

java - 前端架构

java - 无法在从html文件呈现的aspose ppt中嵌入样式

java - 哪个组件处理字符串中的组合分音符?

sparql - SPARQL 查询中表达式的顺序

rdf - 将 10Gb 的 RDF 加载到 virtuoso 三元组中的最快方法?

html - 搜索引擎如何从 html 页面中获取结构化数据?

java - 每秒从另一个线程更新 swt ui

python - 如何从 Python 访问 Virtuoso RDF 存储?

semantic-web - 向网站添加语义的最佳实践

sparql - 三重存储中的开放世界假设和 SPARQL