Sparql 检索节点为特定类型且至少有一个不是特定类型主体的所有相邻节点

Sparql 检索节点为特定类型且至少有一个不是特定类型主体的所有相邻节点,sparql,Sparql,我有一个SPARQL查询,用于检索与另一个特定类的实例相邻的特定类的所有实例。例如: SELECT?origin?dependent WHERE{ ?产地a:类型1。 起源?某些谓词?依赖。 ?从属a:类型2。 } 假设上述查询的结果如下所示: ?来源?相关 节点1节点3 节点1节点4 节点2节点5 节点2节点6 因此,在这种情况下,有两个指定类型的节点同时连接到node1和node2。现在,我想将结果限制为那些依赖于?的结果,其中这两个节点中至少有一个不是特定三元组的主体,但在只有一个节点

我有一个SPARQL查询,用于检索与另一个特定类的实例相邻的特定类的所有实例。例如:

SELECT?origin?dependent WHERE{
?产地a:类型1。
起源?某些谓词?依赖。
?从属a:类型2。
}
假设上述查询的结果如下所示:

?来源?相关
节点1节点3
节点1节点4
节点2节点5
节点2节点6
因此,在这种情况下,有两个指定类型的节点同时连接到
node1
node2
。现在,我想将结果限制为那些依赖于
?的
结果,其中这两个节点中至少有一个不是特定三元组的主体,但在只有一个节点具有三元组的情况下仍然返回这两个结果

假设图中存在以下三元组:

node4:issubjtof:thisttriple。
节点5:isSubjectOf:thisTriple。
节点6:isSubjectOf:thisTriple。
让我们假设
node3
是节点3-6中唯一没有此特定三元组的节点。现在,我想编写一个查询,使我的结果集如下所示:

?来源?相关
节点1节点3
节点1节点4

我希望我把这个问题说得足够清楚,让人能理解。是否有一些方便而高效的SPARQL技术来完成类似的任务?如果可能的话,我宁愿避免过滤。

这就是我对数据的设想:

@prefix ns0: <http://example.com/> .

<http://example.com/node1>
  a <http://example.com/type1> ;
  ns0:somePredicate ns0:node3, ns0:node4 .

ns0:node2
  a ns0:type1 ;
  ns0:somePredicate ns0:node5, ns0:node6 .

ns0:node3
  a ns0:type2 ;
  ns0:isSubjectOf ns0:thisTriple .

ns0:node4 a ns0:type2 .
ns0:node5 a ns0:type2 .
ns0:node6 a ns0:type2 .

这个答案对于我的上一个问题来说非常好。我更新了这个问题,以更好地反映我的实际用例,即仅在没有特定三元组的情况下,而不是在有一个三元组的情况下才包含。我认为您可以使用
减号
操作,或者使用可怕的
过滤器(!bound(?theTrip))
过滤器不存在来处理这个否定的情况{?主题:isSubjectOf?主题}
我认为这些解决方案不会返回结果集,包括一个依赖于三元组和一元组的情况without@hayfreed如果您提供一个完整的最小数据样本,这样我们就不必自己猜测和创建数据了,这将是一个很好的选择,并且这个数据应该是一个有效的RDF片段,这样我们就可以运行和测试SPARQL查询有很多选项可以解决您的问题。不要忘记,您还可以将
联合
放入
筛选器NOT EXISTS``中,SPARQL 1.1还提供了
IF-ELSE`feature@StanislavKralin你是对的,现在回想起来,我应该问另一个问题,而不是更新我以前的问题d该问题的解决方案是针对我的申请的,但我还没有想到一个通用的解决方案,该解决方案适合作为一个公认的答案。
PREFIX  :     <http://example.com/>

SELECT  ?origin ?dependent
WHERE
  { ?origin   a                     :type1 ;
              ?somePredicate        ?dependent .
    ?dependent  a                   :type2 .
    ?origin   ?anyPred              ?theSubj .
    ?theSubj  :isSubjectOf          ?theTrip
  }
+--------+-----------+
| origin | dependent |
+--------+-----------+
| :node1 | :node3    |
| :node1 | :node4    |
+--------+-----------+