我正在对Stardog数据检索进行一些测试,但不确定如何解决以下问题:

我有一个通过HTTP URL(http://localhost:5820/myDB/query?query=...)和Accept = "application/sparql-results+json"查询的Stardog数据库

我创建了一个SPARQL查询,如下所示:

select distinct ?p ?childname
where {
    ?p a ex:Person .
        OPTIONAL { ?p ex:hasChild ?child .
        ?child rdfs:label ?childname . }
}

我的问题是,这给每个孩子一个对象,例如(注意符号是说明性的):
{ p = XXX
childname = AAA
}
{ p = XXX
childname = BBB
}
....

我可以用GROUP_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

08-25 14:07