SPARQL运算符';'的含义

Ble*_*kos 14 sparql

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

例如:

SELECT ?x ?y
WHERE { ?z foaf:name ?x ; :surname ?y }
Run Code Online (Sandbox Code Playgroud)

什么; 算子意味着什么?就像一个逻辑,这意味着这一部分

?z foaf:

走了之前:再次姓?

Jos*_*lor 29

它不是SPARQL运算符,而是SPARQL中三重模式的语法的一部分.完整规范在SPARQL规范的第4.2节" 三元组语法"中.第4.2.1节谓词 - 对象列表描述了;符号:

可以编写具有共同主题的三重模式,使得主题仅被写入一次并且通过使用";"而被用于多于一个三重模式.符号.

?x  foaf:name  ?name ;
    foaf:mbox  ?mbox .
Run Code Online (Sandbox Code Playgroud)

这与编写三重模式相同:

?x  foaf:name  ?name .
?x  foaf:mbox  ?mbox .
Run Code Online (Sandbox Code Playgroud)

您可能还对第4.2.2节对象列表感兴趣:

如果三重模式共享主语和谓词,则对象可以用","分隔.

?x foaf:nick  "Alice" , "Alice_" .
Run Code Online (Sandbox Code Playgroud)

与编写三重模式相同:

?x  foaf:nick  "Alice" .
?x  foaf:nick  "Alice_" .
Run Code Online (Sandbox Code Playgroud)

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

?x  foaf:name ?name ; foaf:nick  "Alice" , "Alice_" .
Run Code Online (Sandbox Code Playgroud)

相当于:

?x  foaf:name  ?name .
?x  foaf:nick  "Alice" .
?x  foaf:nick "Alice_" .
Run Code Online (Sandbox Code Playgroud)

在RDF的Turtle和N3序列化中使用相同的语法.参见2.3对Turtle的缩写三元组,其中说

该符号可用于重复仅在对象RDF术语中不同的三元组的主语和谓词....... 符号可用于重复三元组​​的主语,这三元组仅在谓词和对象RDF术语中有所不同.

对于N3,请参阅语义部分,其中说:

在财产清单中,分号; 是重复主题的简写.在对象列表中,是重复动词的简写.