Как получить сводных братьев / сестер в SPARQL? - PullRequest
1 голос
/ 26 сентября 2011

У меня есть этот набор данных RDF с семьей, у которой есть отношение hasParent.Для поиска всех пар братьев и сестер у меня есть следующий запрос:

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 Ответ

1 голос
/ 26 сентября 2011

Это у вас работает?

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