2013-08-13 10 views
8

Cosa fa ';' operatore nella clausola WHERE significa in SPARQL?Significato dell'operatore SPARQL ';'

Ad esempio:

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

Che; operatore significa qui? È come una logica e questo significa che questa parte

z foaf:?

va prima: il cognome di nuovo?

risposta

21

Non è un operatore SPARQL, ma piuttosto parte della sintassi per triple pattern in SPARQL. La specifica completa è nella sezione 4.2 Syntax for Triples dalla specifica SPARQL. Sottosezione 4.2.1 liste predicato-oggetto descrive la ; notazione:

modelli triple con un tema comune possono essere scritti in modo che il soggetto viene scritto solo una volta ed è usato per più di un triplo modello da impiegando il ";" notazione.

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

Questo è lo stesso che scrivere i modelli triple:

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

Potreste anche essere interessati a sottosezione 4.2.2 di elenchi di oggetti:

If modelli triple condividere sia soggetto che predicato, gli oggetti possono essere separati da "," .

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

è lo stesso che scrivere i modelli triple:

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

elenchi degli oggetti possono essere combinati con gli elenchi predicato-oggetto:

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

è equivalente a:

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

La stessa sintassi viene utilizzata nelle serializzazioni Turtle e N3 di RDF. Vedere 2.3 Abbreviating groups of triples per Tartaruga, che dice

Il simbolo, può essere utilizzato per ripetere il soggetto e il predicato di tripli che differiscono solo nel termine RDF dell'oggetto. … Il ; il simbolo può essere utilizzato per ripetere l'argomento di tripli che variano solo in termini di predicato e oggetto RDF.

e N3, vedere la sezione di Semantics, che dice:

Negli elenchi di proprietà, il punto e virgola; è una scorciatoia per ripetere l'argomento. Negli elenchi di oggetti, è una scorciatoia per ripetere il verbo.