Rdf 返回JSON层次结构的单个SPARQL查询
我正在对Stardog数据检索进行一些测试,我不确定如何解决以下问题: 我有一个Stardog数据库,我通过HTTP URL(Rdf 返回JSON层次结构的单个SPARQL查询,rdf,sparql,triplestore,stardog,Rdf,Sparql,Triplestore,Stardog,我正在对Stardog数据检索进行一些测试,我不确定如何解决以下问题: 我有一个Stardog数据库,我通过HTTP URL(http://localhost:5820/myDB/query?query=...)和Accept=“application/sparql results+json” 我创建了一个SPARQL查询,如下所示: select distinct ?p ?childname where { ?p a ex:Person . OPTIONAL {
http://localhost:5820/myDB/query?query=...
)和Accept=“application/sparql results+json”
我创建了一个SPARQL查询,如下所示:
select distinct ?p ?childname
where {
?p a ex:Person .
OPTIONAL { ?p ex:hasChild ?child .
?child rdfs:label ?childname . }
}
我的问题是这给了我每个孩子一个对象,比如(注意符号是说明性的):
我可以用组_CONCAT“解决”这个问题,但这只会连接字符串:
{ p = XXX
childname = AAA, BBB, ....
}
我需要获得正确的JSON结构:
{ p = XXX
{ childname = AAA }
{ childname = BBB }
.....
}
当然,我可以运行两个SPARQL查询,一个用于获取?p,另一个用于获取?childname的列表,但在我的情况下,这实际上是不可能的(没有详细输入为什么不)
如何使用JSON中的单个URL获得这些结果?JSON-LD中的结果可能是无需后处理即可获得的最接近所需格式的结果。您需要将查询重写为CONSTRUCT,并使用
Accept:application/ld+json
此查询的结果是一系列绑定,每个绑定都有一个p值,还可以选择一个childname值。正如您所注意到的,您可以使用GROUPBY,但您必须将这些值组合起来;你将无法获得你想要的格式。你必须对结果进行后处理。
{ p = XXX
{ childname = AAA }
{ childname = BBB }
.....
}