如何在 SPARQL 中获取同父异母的兄弟/姐妹?

发布于 2024-12-06 16:47:46 字数 401 浏览 0 评论 0原文

我有这个 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)
}

但是,如何获得所有同父异母兄弟/姐妹对?这意味着:只有一个共同父母的兄弟姐妹。

编辑:也许很重要,数据集还包含 MarriedWith 关系

I have this RDF dataset with a family that has the hasParent realtionship. To search for all brother and sisters pairs I have the following query:

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

However, How do I get all the halfbrother/sisters pair? This means: brothers and sisters that have only one parent in common.

Edit: maybe important, the dataset also contains the marriedWith relationship

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

寒尘 2024-12-13 16:47:46

这对你有用吗?

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

Does this work for you?

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)
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文