gpt4 book ai didi

SPARQL:查询以获取与第三个类共享相同连接的两个类的所有实例

转载 作者:行者123 更新时间:2023-12-01 05:28:14 25 4
gpt4 key购买 nike

我试图了解 SPARQL 的功能,我想知道这种查询是否可行:

Diagram of my Ontology structure (对不起,我还不允许发图片)

我想获取与 B 类的相同实例有连接的 A 类和 B 类的所有实例。所以某种:

Select ?a, ?c
Where
{
?a myOntology:ab ?c .
?c myOntology:cb ?B .
}

这会给我:
A:1 C:1
A:2 C:1 (with B:2)
A:2 C:1 (with B:3)

(其中字母是类,数字是实例,从顶部开始计数)

但不同的是,我只想要那些与 B 的相关实例完全相同的实例:
A:2 C:1 (with B:2 and B:3)

这是可能的还是我必须使用外部逻辑才能得到它?

我很乐意为您提供任何答案...

最佳答案

是的你可以!如果您可以使用 NOT EXISTS。

SPARQL 与 SQL 一样,没有通用量词,但您可以使用嵌套的 NOT EXISTS-s。

您的查询是,在伪 SPARQL 中,“给我所有对 (a,c) 使得 abc 这样没有其他 bb 这样 a-bb 而不是 bb-c --- 和虎钳诗:bb-c 而不是 a- bb”:

PREFIX : <http://test/>
SELECT ?a ?b ?c
WHERE
{ ?a :ab ?b .
?b :bc ?c .
FILTER NOT EXISTS
{ ?a :ab ?bb .
FILTER NOT EXISTS
{ ?bb :bc ?c . }
}
## vise verse:
FILTER NOT EXISTS
{ ?bb :bc ?c .
FILTER NOT EXISTS
{ ?a :ab ?bb . }
}
}

运行它
@prefix : <http://test/> .
:a1 :ab :b1 .
:a1 :ab :b2 .
:a2 :ab :b2 .
:a2 :ab :b3 .
:b2 :bc :c1 .
:b3 :bc :c1 .


----------------------------------------------------------
| a | b | c |
==========================================================
| <http://test/a2> | <http://test/b3> | <http://test/c1> |
| <http://test/a2> | <http://test/b2> | <http://test/c1> |
----------------------------------------------------------

关于SPARQL:查询以获取与第三个类共享相同连接的两个类的所有实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12816284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com