我对SPARQL相对较新,并且正在努力解决以下两个查询示例的区别:
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name ?email
WHERE {
?person a foaf:Person.
?person foaf:name ?name.
?person foaf:mbox ?email.
}
VS
PREFIX mo: <http://purl.org/ontology/mo/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name ?img ?hp ?loc
WHERE {
?a a mo:MusicArtist ;
foaf:name ?name ;
foaf:img ?img ;
foaf:homepage ?hp ;
foaf:based_near ?loc .
}
我的问题:&#39;?人为什么&#39;第一个例子中的变量名在每一行都需要,而&#39;?a&#39;第二个例子中的变量名只使用一次吗?
答案 0 :(得分:0)
这是一个简短的手。看到&#34;;&#34;在行尾?这意味着&#34;下一个三重模式使用与此相同的主题&#34;。
http://www.w3.org/TR/sparql11-query/#QSynTriples
?a a mo:MusicArtist ;
foaf:name ?name ;
foaf:img ?img ;
foaf:homepage ?hp ;
foaf:based_near ?loc .
是一个与
完全相同的三元模式的块?a a mo:MusicArtist .
?a foaf:name ?name .
?a foaf:img ?img .
?a foaf:homepage ?hp .
?a foaf:based_near ?loc .
这只是语法。