0

C是否可以使用 SPARQL 查询在连接到给定文字的模型中检索给定类的所有资源?

例如:

S1, p1, o1
S1, type, C
O1, p2, L1

S2, p3, o2
S2, type, C
O2, p4, o3
O3, p5, L1

对于文字L1,我想检索S1and S2

4

1 回答 1

2

如果您提供我们可以实际使用的数据,总是会更容易。例如,这是您在 Turtle 中的数据,并且以我们可以实际查询的方式。将来,请尽量提供我们可以使用的最小数据样本。

@prefix : <urn:ex:>

:s1 a :C ;
    :p1 :o1 .

:o1 :p2 "l1" .

:s2 a :C ;
    :p3 :o2 .

:o2 :p4 :o3 .

:o3 :p5 "l1" .

这是一个查询,它查找从作为:C实例的主题?s到文字"l1"的路径。这是使用“通配符”的属性路径。由于我们已经定义了前缀,是一个 IRI,并且由于每个 IRI 要么是要么不是 ( ),因此零次或多次重复的路径是从?s"l1"的路径。有关通配符属性路径的更多信息,请参阅具有任意属性的 SPARQL 属性路径查询。(:|!:)*:::!::|!:

prefix : <urn:ex:>

select ?s {
  ?s a :C ; (:|!:)* "l1"
}
-------
| s   |
=======
| :s2 |
| :s1 |
-------
于 2016-06-20T20:33:11.960 回答