[英]sparql query to get a triplet related to other triples
假设我们有许多与以下内容相关的RDF三元组:
1: <S,P1,O>
2: <O,P2,O3>
3: <O,P3,O4>
4: <O3,P4,O5>
我只想知道三号1,就想得到三号N°2、3和4,因为三号N°2和3与三号N°1共享“ O”,而三号N°4与三号N°2共享“ O3”,与三重N°1共享“ O”是否可以用不知道P2,P3,P4的sparql查询来表述?
先感谢您
当然。 该查询将做到这一点:
CONSTRUCT {
?s ?p ?o .
?o ?q ?z.
?w ?r ?o .
}
WHERE {
?s ?p ?o .
FILTER (?s = :O || ?o = :O)
OPTIONAL { ?o ?q ?z . }
OPTIONAL { ?w ?r ?o . }
}
不过,它不太可能非常有效。 但是,如果不了解您的实际数据或为什么要获得此特定结果,将很难提出更好的解决方案。
听起来您好像知道:O
,您正在要求以三元组为主题的三元组,以及以这些三元组为对象的三元组。 那么,您是否要这样?
select * where {
:O ?p2 ?o2 .
optional { ?o2 ?p3 ?o3 }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.