';'是什么WHERE子句中的运算符意味着在SPARQL中?

例如:

SELECT ?x ?y
WHERE { ?z foaf:name ?x ; :surname ?y }


什么;运算符是指这里?就像一个逻辑,这意味着这部分


z foaf:


再去:surname之前?

最佳答案

它不是SPARQL运算符,而是SPARQL中三重模式语法的一部分。完整的规范在SPARQL规范的4.2 Syntax for Triples部分中。第4.2.1节“谓词-对象列表”描述了;表示法:


可以写出具有共同主题的三联模式,以便
该主题只写过一次,使用了三倍以上
通过使用“;”模式符号。

?x  foaf:name  ?name ;
    foaf:mbox  ?mbox .


这与编写三元模式相同:

?x  foaf:name  ?name .
?x  foaf:mbox  ?mbox .



您可能也对4.2.2小节的对象感兴趣:


如果三元模式同时共享主语和谓语,则宾语可能
用“,”分隔。

?x foaf:nick  "Alice" , "Alice_" .


与编写三元模式相同:

?x  foaf:nick  "Alice" .
?x  foaf:nick  "Alice_" .


对象列表可以与谓词-对象列表组合:

?x  foaf:name ?name ; foaf:nick  "Alice" , "Alice_" .


等效于:

?x  foaf:name  ?name .
?x  foaf:nick  "Alice" .
?x  foaf:nick "Alice_" .



RDF的Turtle和N3序列化使用相同的语法。参见2.3 Abbreviating groups of triples了解Turtle,其中显示


可以使用符号来重复仅在对象RDF术语上有所不同的三元组的主语和谓语。 ……;符号可用于重复三元组​​的主题,这些三元组仅在谓词和宾语RDF术语中有所不同。


对于N3,请参见Semantics部分,其中说:


在属性列表中,分号;是重复主题的简写。在对象列表中,是重复动词的简写。

关于sparql - SPARQL运算符';'的含义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18214338/

10-13 02:41