在SPARQL中以“dbp:variable of”的形式选择变量

时间:2018-03-13 10:12:57

标签: sparql dbpedia

我正在尝试使用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”。

有人知道如何为此制定查询吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

至于&#34;是......的#34;,请参阅this answer。您的查询应该是:

SELECT ?northeast ?ne WHERE {
    ?northeast dbp:northeast dbr:India 
    OPTIONAL {?northeast foaf:name ?ne}
}

Try it!

SELECT ?northeast ?ne WHERE {
    VALUES (?country) {(dbr:India)}
    ?country ^dbp:northeast ?northeast; rdfs:label ?ne.
    FILTER (lang(?ne) = "en") .
}

Try it!

它更有趣,为什么&#34;其他东西的长列表&#34;返回而不是空结果集。

来自In SPARQL, Order Matters

  

SPARQL评估开始于所谓的“空映射”(也称为“通用映射”):[if] OPTIONAL块无法检索任何结果,并且给定OPTIONAL的语义,此步骤只是保留空映射。

一般情况下,永远不要从OPTIONAL开始。