首页 > 解决方案 > 多个层次关系的 SPARQL 传递查询

问题描述

我有一棵树,我想传递遍历。

我面临的一个问题是我有一个父概念:

parentConcept -> hierRelationship1 -> child -> hierRelationship2 -> 
     -> grandChild -> hierelationship3 -> greatGrandChild -> hierelationship2 -> greatGreatGrandChild     

所以基本上我有几个层次关系混合层次结构。我确实知道 parentConcept 的所有直系孩子都有关系skos:broader- 这是孙子 + 事情变得毛茸茸的地方。

到目前为止,我尝试过的是:

PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?child
WHERE {

    ?rel rdfs:subPropertyOf skos:broader  .  # get subPropertyOf rels
    ?child skos:broader <parentConcept> .
    ?grandchild ?rel ?child
    }

理想情况下,我想“解包”我的 ?rel 变量,以便可以将传递运算符 (+) 添加到此变量中的每个关系,但我不确定这在 sparql 中是否可行。

有没有人看到更好的方法来做到这一点,或者我在正确的轨道上?

我也尝试过包含 OPTIONAL{} 查询,例如OPTIONAL {grandchild2 ?rel grandchild},但这非常慢并且感觉笨拙

标签: sparqlrdf

解决方案


推荐阅读