2011-09-26 35 views
1

我有一個具有hasParent realtionship的族的RDF數據集。要搜索所有的兄弟姐妹們對我有以下查詢:如何在SPARQL中獲得halfbrothers /姐妹?

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

然而,如何讓所有的halfbrother /姐妹對?這意味着:只有一個共同父母的兄弟姐妹。

編輯:也許重要的是,該數據集還包含marriedWith關係

回答

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) 
} 
+0

工作完美,謝謝! – Javaaaa