【问题标题】:Single SPARQL query returning JSON hierarchy返回 JSON 层次结构的单个 SPARQL 查询
【发布时间】:2014-07-06 00:06:26
【问题描述】:

我正在对 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 中的单个 URL 获得这些结果?

【问题讨论】:

  • 这个查询的结果是一个绑定序列,每个绑定都有一个 p 的值,以及一个可选的 childname 的值。正如您所指出的,您可以使用 group by,但您必须组合这些值;您将无法以您想要的格式获得它们。您必须对结果进行后处理。

标签: rdf sparql triplestore stardog


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2016-10-19
    • 2018-12-28
    • 1970-01-01
    • 2022-08-25
    • 2021-09-04
    • 1970-01-01
    • 2019-05-02
    • 2020-04-17
    • 2015-10-15
    相关资源
    最近更新 更多