【发布时间】:2015-07-03 15:31:36
【问题描述】:
我正在尝试按国家/地区名称从 dbpedia 查询数据。我希望它找到它是否有该国家的资源或通过它在 wikiPageRedirects 中的存在。这是一个工作版本:
PREFIX res: <http://dbpedia.org/resource/>
PREFIX ont: <http://dbpedia.org/ontology/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?country ?capital ?label
WHERE {
{ res:Dominion_of_Canada ont:capital ?capital .
?capital rdfs:label ?label }
UNION
{ res:Dominion_of_Canada ont:wikiPageRedirects ?country .
?country ont:capital ?capital .
?capital rdfs:label ?label }
FILTER (lang(?label) = "en")
}
我想(如果可能的话)排除 ?country。是否可以将资源分配给变量,使 SPARQL 查询如下所示?
SELECT ?country ?capital ?label
WHERE {
{ ?country EXISTS res:Dominion_of_Canada } # to get the idea across
UNION
{ res:Dominion_of_Canada ont:wikiPageRedirects ?country }
?country ont:capital ?capital .
?capital rdfs:label ?label .
FILTER (lang(?label) = "en")
}
与以往一样,速度也很重要。如果资源存在,那么最好跳过在 wikiPageRedirects 上的搜索。
【问题讨论】:
-
谢谢,约书亚。查询的那部分已经在工作。我在上面的主要问题中添加了更多细节。
-
我在那里看不到查询...,但将代码作为问题更新发布通常更容易。
-
“如果该资源存在,我希望它使用 res:France 作为变量 ?country。” 关于“如果该资源存在”的部分并不完全定义明确。 URI
res:France存在,它只是一个常量值,就像一个数字存在,或者一个字符串存在一样。我认为您的意思是(如果我有误解,请纠正我),如果 res:France 具有您要查找的属性,您想使用它,但除此之外,请使用 res:France 重定向到的页面。我认为我最初链接到的问题可能会有所帮助。 -
嘿,你反应快!我的编辑现已完成。我希望这更清楚。在这一点上,我不关心任何品质的存在——只是找到我正在寻找的实际 dbpedia 资源。上面的查询有效,但我想知道是否可以通过这种方式分解 ?capital 和 ?label 行。