用于直接 dbpedia 资源或 wikiPageRedirects 的 SPARQL
SPARQL for direct dbpedia resource OR wikiPageRedirects
我正在尝试通过国家名称从 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")
}
我想(如果可能的话)将 ? 国家/地区排除在外。是否可以将资源分配给变量,使 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 上的搜索。
这个呢?
PREFIX dbr: <http://dbpedia.org/resource/>
select dbr:France ?capital ?label where {
{dbr:France a dbpedia-owl:Country.
dbr:France dbpedia-owl:capital ?capital .
?capital rdfs:label ?label .
}
union {dbr:France dbpedia-owl:wikiPageRedirects ?redirectPage.
?redirectPage dbpedia-owl:capital ?capital.
?capital rdfs:label ?label .
}
}
检查资源是否 "exists" 有点模糊,因为 IRI 只是常量数据。问题实际上是 DBpedia 是否包含关于特定资源的任何三元组。在你的情况下,你想知道它是否重定向到其他任何东西,或者它是否有自己的属性。形式为 dbpedia:France dbpedia-owl:wikiPageRedirects* ?country 的 属性 路径可能是最好的方法。如果没有重定向链接,那么 ?country 就是 dbpedia:France,如果有,那么 ?country 是重定向的值。 "check" 的唯一方法是寻找那些三元组。我认为这意味着你最终会得到这样的结果(类似于我对 another question involving redirects 的回答中显示的内容):
select ?country ?anthem ?author {
#-- The only way to really "check" that the resource
#-- "exists" and is not a redirect, is by checking
#-- whether it has any redirect links. If it doesn't,
#-- then ?country is dbpedia-owl:France, like you want
#-- and if it does, then then you want to follow them.
dbpedia:France dbpedia-owl:wikiPageRedirects* ?country .
#-- I'm using anthem and author here because
#-- it doesn't look like there was reliable information
#-- about the capital.
?country dbpedia-owl:anthem ?anthem .
?anthem dbpprop:author ?author .
}
我正在尝试通过国家名称从 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")
}
我想(如果可能的话)将 ? 国家/地区排除在外。是否可以将资源分配给变量,使 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 上的搜索。
这个呢?
PREFIX dbr: <http://dbpedia.org/resource/>
select dbr:France ?capital ?label where {
{dbr:France a dbpedia-owl:Country.
dbr:France dbpedia-owl:capital ?capital .
?capital rdfs:label ?label .
}
union {dbr:France dbpedia-owl:wikiPageRedirects ?redirectPage.
?redirectPage dbpedia-owl:capital ?capital.
?capital rdfs:label ?label .
}
}
检查资源是否 "exists" 有点模糊,因为 IRI 只是常量数据。问题实际上是 DBpedia 是否包含关于特定资源的任何三元组。在你的情况下,你想知道它是否重定向到其他任何东西,或者它是否有自己的属性。形式为 dbpedia:France dbpedia-owl:wikiPageRedirects* ?country 的 属性 路径可能是最好的方法。如果没有重定向链接,那么 ?country 就是 dbpedia:France,如果有,那么 ?country 是重定向的值。 "check" 的唯一方法是寻找那些三元组。我认为这意味着你最终会得到这样的结果(类似于我对 another question involving redirects 的回答中显示的内容):
select ?country ?anthem ?author {
#-- The only way to really "check" that the resource
#-- "exists" and is not a redirect, is by checking
#-- whether it has any redirect links. If it doesn't,
#-- then ?country is dbpedia-owl:France, like you want
#-- and if it does, then then you want to follow them.
dbpedia:France dbpedia-owl:wikiPageRedirects* ?country .
#-- I'm using anthem and author here because
#-- it doesn't look like there was reliable information
#-- about the capital.
?country dbpedia-owl:anthem ?anthem .
?anthem dbpprop:author ?author .
}