如何在SPARQL中获得halfbrothers / sisters?

时间:2011-09-26 14:18:16

标签: sql sparql

我有一个具有hasParent真实性的系列的RDF数据集。要搜索所有兄弟姐妹对,我有以下查询:

SELECT DISTINCT ?name1 ?name2
WHERE {
    ?subject1 oranje:hasParent ?object .
    ?subject2 oranje:hasParent ?object .
    ?subject1 rdfs:label ?name1 .
    ?subject2 rdfs:label ?name2 .
    FILTER (?subject1 != ?subject2)
}

然而,我如何得到所有半兄弟/姐妹一对?这意味着:兄弟姐妹只有一个共同的父母。

编辑:可能很重要,数据集还包含已婚关系

1 个答案:

答案 0 :(得分:1)

这对你有用吗?

SELECT DISTINCT ?name1 ?name2
WHERE {
   ?child1 oranje:hasParent ?parent , ?otherparent1 .
   ?child2 oranje:hasParent ?parent , ?otherparent2 .
   ?child1 rdfs:label ?name1 .
   ?child2 rdfs:label ?name2 .
   FILTER (?child1 != ?child2)
   FILTER (?otherparent1 != ?parent)
   FILTER (?otherparent2 != ?parent)
   FILTER (?otherparent1 != ?otherparent2)
}