SPARQL:查询以获取共享到第三个类的相同连接的两个类的所有实例
我试图了解SPARQL的功能,我想知道这种查询是否可行: (对不起,我还不能发布照片) 我想得到所有与B类实例有连接的A类和B类实例。因此某种:SPARQL:查询以获取共享到第三个类的相同连接的两个类的所有实例,sparql,ontology,Sparql,Ontology,我试图了解SPARQL的功能,我想知道这种查询是否可行: (对不起,我还不能发布照片) 我想得到所有与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
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)
这是可能的,还是我必须使用外部逻辑才能做到
如果有任何答案,我都会很高兴…是的,你可以!如果可以使用,则不存在 SPARQL和SQL一样,没有通用量词,但可以使用嵌套的not EXISTS-s 在伪SPARQL中,您的查询是“给我所有对(a,c),这样a-b-c,这样就没有其他bb,这样a-bb而不是bb-c,反之亦然:bb-c而不是a-bb”:
前缀:
选择a、b、c
哪里
{?a:ab?b。
b:bc?c。
筛选器不存在
{?a:ab?bb。
筛选器不存在
{?bb:bc?c.}
}
##台钳诗:
筛选器不存在
{?bb:bc?c。
筛选器不存在
{?a:ab?bb.}
}
}
运行它
@prefix : <http://test/> .
:a1 :ab :b1 .
:a1 :ab :b2 .
:a2 :ab :b2 .
:a2 :ab :b3 .
:b2 :bc :c1 .
:b3 :bc :c1 .
@前缀:。
:a1:ab:b1。
:a1:ab:b2。
:a2:ab:b2。
:a2:ab:b3。
:b2:bc:c1。
:b3:bc:c1。
给予
----------------------------------------------------------
|a | b | c|
==========================================================
| | | |
| | | |
----------------------------------------------------------
@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> |
----------------------------------------------------------