我有一个 sparql 构造查询,用于根据 where 子句构造各种图表。 sparql 构造查询的工作原理如下:它返回一个包含所有不同实例(或映射)的模型。我想返回每个可以找到的映射的图表(下面描述的简单示例)。构造查询的 where 子句可能非常复杂(包括 FILTER、UNION 等)。
如何使用 Java Jena 执行此操作?
示例 这是一个知识图
ex:johnSmith dpvm:access ex:healthRecord-1 .
ex:johnSmith rdf:type dpvm:Pharmacist.
ex:saraParker dpvm:access ex:healthRecord-2 .
ex:saraParker rdf:type dpvm:Pharmacist.
ex:alicePark dpvm:access ex:healthRecord-3 .
ex:alicePark rdf:type dpvm:Pharmacist.
这是一个构造查询
CONSTRUCT
{
?x dpvm:access ?y .
}
WHERE
{
?x dpvm:access ?y.
?x rdf:type dpvm:Pharmacist .
}
我想为每个绑定集返回单独的图表,例如:
图1:
ex:johnSmith dpvm:access ex:healthRecord-1 .
图2:
ex:saraParker dpvm:access ex:healthRecord-2 .
图3:
ex:alicePark dpvm:access ex:healthRecord-3 .
作为扩展,Apache Jena
GRAPH
位于构造模板中。客户端代码必须为四边形格式或本地查询使用execConstructDataset
提供媒体类型。 WHERE 子句应设置一个变量,为每个人提供 URI 名称(可以在其 URI 后附加“-graph”)
示例:
CONSTRUCT
{
GRAPH ?graph { ?x dpvm:access ?y . }
} WHERE {
...
BIND (uri(concat(str(?x), "-graph")) AS ?graph)
}
根据数据中的命名,确切的表达可能会有所不同。