如何检索连接到给定值的给定 class 的所有资源
How to retrieve all resources of a given class connected to a given value
是否可以使用 SPARQL 查询在连接到给定文字的模型中检索给定 class C
的所有资源?
例如:
S1, p1, o1
S1, type, C
O1, p2, L1
S2, p3, o2
S2, type, C
O2, p4, o3
O3, p5, L1
对于文字 L1
,我想检索 S1
和 S2
。
如果您提供我们可以实际使用的数据,事情总是会更容易。例如,这是您在 Turtle 中的数据,并且以我们可以实际查询的方式。以后请尽量提供我们可以使用的最小数据样本。
@prefix : <urn:ex:>
:s1 a :C ;
:p1 :o1 .
:o1 :p2 "l1" .
:s2 a :C ;
:p3 :o2 .
:o2 :p4 :o3 .
:o3 :p5 "l1" .
这是一个查询,它查找从主题 ?s 的路径,该主题是 :C 的实例到文字 "l1"。 (:|!:)*
是使用 "wildcard" 的 属性 路径。由于我们已经定义了 :
前缀,因此 :
是一个 IRI,并且由于每个 IRI 要么是 :
要么不是(!:
),一条零次或多次重复的路径:|!:
的路径是从 ?s 到 "l1" 的路径。有关通配符 属性 路径的更多信息,请参阅 SPARQL property path queries with arbitrary properties。
prefix : <urn:ex:>
select ?s {
?s a :C ; (:|!:)* "l1"
}
-------
| s |
=======
| :s2 |
| :s1 |
-------
是否可以使用 SPARQL 查询在连接到给定文字的模型中检索给定 class C
的所有资源?
例如:
S1, p1, o1
S1, type, C
O1, p2, L1
S2, p3, o2
S2, type, C
O2, p4, o3
O3, p5, L1
对于文字 L1
,我想检索 S1
和 S2
。
如果您提供我们可以实际使用的数据,事情总是会更容易。例如,这是您在 Turtle 中的数据,并且以我们可以实际查询的方式。以后请尽量提供我们可以使用的最小数据样本。
@prefix : <urn:ex:>
:s1 a :C ;
:p1 :o1 .
:o1 :p2 "l1" .
:s2 a :C ;
:p3 :o2 .
:o2 :p4 :o3 .
:o3 :p5 "l1" .
这是一个查询,它查找从主题 ?s 的路径,该主题是 :C 的实例到文字 "l1"。 (:|!:)*
是使用 "wildcard" 的 属性 路径。由于我们已经定义了 :
前缀,因此 :
是一个 IRI,并且由于每个 IRI 要么是 :
要么不是(!:
),一条零次或多次重复的路径:|!:
的路径是从 ?s 到 "l1" 的路径。有关通配符 属性 路径的更多信息,请参阅 SPARQL property path queries with arbitrary properties。
prefix : <urn:ex:>
select ?s {
?s a :C ; (:|!:)* "l1"
}
-------
| s |
=======
| :s2 |
| :s1 |
-------