我正在尝试使用SPARQL从DBPedia选择东北部的某个国家/地区(例如印度)。我正在使用查询:
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dbp: <http://dbpedia.org/property/>
SELECT ?northeast ?ne
WHERE {
OPTIONAL {<http://dbpedia.org/resource/India> dbp:northeast ?northeast }
. OPTIONAL {?northeast foaf:name ?ne}
}
其中变量dbp:northeast应为
Comilla_Division,Rangpur_Division
但是它选择了很长的其他东西。我认为问题可能是在DBPedia中是这个语法中的变量:“是dbp:northeast of”。
有人知道如何为此制定查询吗?
谢谢!
答案 0 :(得分:1)
至于&#34;是......的#34;,请参阅this answer。您的查询应该是:
SELECT ?northeast ?ne WHERE {
?northeast dbp:northeast dbr:India
OPTIONAL {?northeast foaf:name ?ne}
}
或
SELECT ?northeast ?ne WHERE {
VALUES (?country) {(dbr:India)}
?country ^dbp:northeast ?northeast; rdfs:label ?ne.
FILTER (lang(?ne) = "en") .
}
它更有趣,为什么&#34;其他东西的长列表&#34;返回而不是空结果集。
SPARQL评估开始于所谓的“空映射”(也称为“通用映射”):[if] OPTIONAL块无法检索任何结果,并且给定OPTIONAL的语义,此步骤只是保留空映射。
一般情况下,永远不要从OPTIONAL
开始。