0

假设我们有许多相关的 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 查询来制定?

先感谢您

4

2 回答 2

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

不过,它不太可能非常有效。但是,如果不了解更多关于您的实际数据或为什么想要这个特定结果,就很难提出更好的解决方案。

于 2013-12-25T23:02:33.733 回答
0

听起来您知道:O并且您要求将其作为主语的三元组,以及将这些三元组的宾语作为主语的三元组。那你是在求这样的东西吗?

select * where {
  :O ?p2 ?o2 .
  optional { ?o2 ?p3 ?o3 }
}
于 2013-12-26T04:44:02.413 回答