单个SPARQL查询返回JSON层次结构

时间:2014-07-06 00:06:27

标签: 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 { ?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中的单个网址获取这些结果?

1 个答案:

答案 0 :(得分:0)

JSON-LD中的结果可能是您在没有后处理的情况下获得所需格式的最接近的结果。您需要将查询重写为CONSTRUCT,并使用Accept: application/ld+json