我想查询以加载资源并自动加载由'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.
}
}
}
}
答案 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.
}}