使用concat将SPARQL查询到第二级和第三级

使用concat将SPARQL查询到第二级和第三级,sparql,rdf,semantic-web,rdfs,Sparql,Rdf,Semantic Web,Rdfs,[我有一个三级树状结构,目前我可以从下面写的查询中获取第一级数据。我正在寻找一个查询,它可以帮助我收集?o及其各自的?s?p和?o的数据,如果需要,甚至可以深入到第三级 我已经用construct query尝试过了,但希望它是一种特定的格式,请用select和concat尝试一下 construct{ ?CR ?p ?cOBJECT .} where { select ?CR ?p (group_concat(?o;separator=',') as ?cOBJECT) wh

[我有一个三级树状结构,目前我可以从下面写的查询中获取第一级数据。我正在寻找一个查询,它可以帮助我收集?o及其各自的?s?p和?o的数据,如果需要,甚至可以深入到第三级

我已经用construct query尝试过了,但希望它是一种特定的格式,请用select和
concat尝试一下

construct{ ?CR ?p ?cOBJECT .} 
where {
    select ?CR ?p (group_concat(?o;separator=',') as ?cOBJECT)
    where{ VALUES ?p {abc:hasPart abc:hasLog abc:Description abc:CRStatus abc:hasSB abc:hasTB}
        ?CR ?p ?o .      
    }    
    GROUP BY ?CR ?p
}

示例数据+预期输出在这里会很有用……但是像这样,只需添加三重模式和concat(在这里我使用了
?o1
):
选择?CR?p(group_concat(concat(str(?o),str(o1)),;separator=',as?cOBJECT),其中{VALUES?p{abc:hasPart abc:hasLog abc:Description abc:CRStatus abc:hasb abc:hasTB}?CR?p?o.可选的{o?p1?o1}}组,由?CR?p
-如果您以后在RDF中需要它(例如,
?cOBJECT?p1?o1
或类似),那么它可能更复杂,但是没有看到一个示例,我现在太困惑了。实际上,第二级是一个列表,而不是一个节点,如果我尝试运行上面的代码,它会重复str(o1)在CRI的所有谓词中,我还有一个问题,假设我有一个从sparql查询中获得的数据,并且我需要以特定的格式将其提供给我的用户,除了解析输出之外,是否有一种直接的方法来格式化数据?