某些类型的所有属性的SPARQL属性路径

时间:2018-08-08 16:55:44

标签: properties sparql semantic-web

我想查询以加载资源并自动加载由'DependencyProperty'连接的所有资源。

下面的查询做了我想要的多达3个层次的内容。我想知道它是否可以更改-可能带有属性路径? -深度没有限制。

SELECT * WHERE { 
    :resourceToLoad ?p ?o.
    OPTIONAL { 
        ?p rdf:type :DependencyProperty.
        ?o ?p2 ?o2.
        OPTIONAL { 
            ?p2 rdf:type :DependencyProperty.
            ?o2 ?p3 ?o3.
            OPTIONAL { 
                ?p3 rdf:type :DependencyProperty.
                ?o3 ?p4 ?o4.
            }
        }
    }
}

1 个答案:

答案 0 :(得分:2)

所以我现在自己找到了解决方案。我添加了

:DependencyProperty rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty rdfs:subPropertyOf;
    owl:hasValue :dependency;
]

现在每个:DependencyProperty的属性都是:dependency的subPropertyOf,因此,每当一个依赖项属性作为谓词出现在三元组中时,就会以:dependency作为谓词来创建另一个三元组。

所以现在我可以这样查询:

SELECT * WHERE { {
    ?s?p ?o
    FILTER(?s= :resourceToLoad)
} UNION {
    :resourceToLoad :dependency+ ?s.
    ?s?p ?o.
}}