sparql查询获取与其他三元组相关的三元组

时间:2013-12-24 23:20:24

标签: rdf sparql 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共有“O”,三重N°1 三重N°4共享“O3”,其中三重N°2与三重N°1共享“O” 是否有可能使用sparql查询来表示,而不知道P2,P3,P4?

提前谢谢

2 个答案:

答案 0 :(得分:1)

不确定。此查询将执行以下操作:

  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 . }
   }

但它不太可能非常高效。但是,如果不了解您的实际数据或者您希望获得此特定结果的原因,则很难找到更好的解决方案。

答案 1 :(得分:0)

听起来你知道:O并且你要求以它为主题的三元组,以及以三元组为对象的三元组。你问这样的事情吗?

select * where {
  :O ?p2 ?o2 .
  optional { ?o2 ?p3 ?o3 }
}