如何根据构造 Sparql 查询返回不同的图表?

问题描述 投票:0回答:1

我有一个 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 .

java maven sparql rdf jena
1个回答
0
投票

作为扩展,Apache Jena

GRAPH
位于构造模板中。客户端代码必须为四边形格式或本地查询使用
execConstructDataset
提供媒体类型。 WHERE 子句应设置一个变量,为每个人提供 URI 名称(可以在其 URI 后附加“-graph”)

示例:

CONSTRUCT
{
    GRAPH ?graph { ?x dpvm:access ?y . }
} WHERE {
   ...
   BIND (uri(concat(str(?x), "-graph")) AS ?graph)
}

根据数据中的命名,确切的表达可能会有所不同。

© www.soinside.com 2019 - 2024. All rights reserved.