首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以在SPARQL中获得嵌套的json输出吗?

可以在SPARQL中获得嵌套的json输出吗?
EN

Stack Overflow用户
提问于 2018-07-30 14:28:05
回答 1查看 150关注 0票数 2

我正在使用MarkLogic 8.0-6.3

我遇到了一个场景,我需要在SPARQL中嵌套JSON输出。

例如,IRI有多个相同的谓词,在结果中,我想要数组中的多个值,而不是作为一个完整的三元组。

例如:

假设三元组:

代码语言:javascript
复制
@prefix p0: <http://www.mla.com/term/> .
p0:7 <http://www.w3.org/2004/02/skos/core#narrower> p0:768 ,
                                                    p0:769 ,
                                                    p0:770 ,
                                                    p0:771 .

SPARQL查询:

代码语言:javascript
复制
PREFIX skos-mla: <http://www.mlacustom.com#>
PREFIX term: <http://www.mla.com/term/>

select ?iri ?o {   
    graph<thesaurus-term>{         
        bind(term:7 as ?iri)
        term:7 skos:narrower ?o .
    }
}

上面的查询将返回4个三元组作为输出。

我想要的是它应该只返回一个json结构,比如

代码语言:javascript
复制
{
    "iri": "http://www.mla.com/term/7",
    "narrowers": ["http://www.mla.com/term/768", "http://www.mla.com/term/769", "http://www.mla.com/term/770", "http://www.mla.com/term/771"]
}

上面的JSON只是为了解释这个问题。实际上,我需要一个更复杂的json结构,比如我需要一个json对象数组,而不是字符串数组。

我知道我可以读取响应并以任何格式重新创建整个json,但这会影响性能。

EN

回答 1

Stack Overflow用户

发布于 2018-07-31 03:26:26

在最近的MarkLogic 9版本中,Optic API可以支持以下要求:

  1. 使用op.fromSPARQL()访问器从三元组中映射值的列。
  2. 使用op.jsonObject()链接select()调用以将值收集为对象的属性。
  3. 使用<代码>C10链接groupBy()调用以聚合数组中的对象。
  4. 链接result()调用以获取输出。

有关详细信息,请参阅:

http://docs.marklogic.com/op.jsonObject

和:

http://docs.marklogic.com/op.arrayAggregate

希望这能有所帮助,

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51588131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档