此SPARQL语句有效:
PREFIX s: <http://dbpedia.org/resource/Del_Mar,_California>
PREFIX dbp: <http://dbpedia.org/property/>
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT * WHERE {
OPTIONAL { s: dbp:officialName ?officialName . }
OPTIONAL { s: dbp:name ?foaf_name . }
#-- ... [ about 20 more lines like the above ] ...
} LIMIT 2;
但有些城市有重定向。例如, Pacific_Beach,_California 重定向到 Pacific_Beach,_San_Diego 。我怎么处理这个?
我已将Joshua Taylor's answer读到Retrieving dbpedia-owl:type value of resource with dbpedia-owl:wikiPageRedirect value?,我想知道我的 s:前缀是否让我搞砸了?我似乎无法实现他的解决方案:
select ?type where {
dbpedia:Cupertino dbpedia-owl:wikiPageRedirects*/dbpedia-owl:type ?type
}
其他一些资源建议使用 union :
阅读Wikibooks一章,XQuery/DBpedia with SPARQL - Football teams让我更加困惑。
我正在努力学习这些东西,但我确实迫切需要&#34;只是让它工作&#34;。一个解决方案和一些阅读链接将不胜感激!
答案 0 :(得分:4)
我建议再看看约书亚·泰勒的“this answer”。其中一个建议是使用SPARQL检查数据。所以试试这个查询:
SELECT * WHERE {
<http://dbpedia.org/resource/Pacific_Beach,_California> ?p ?o
}
这将为您提供URI <http://dbpedia.org/resource/Pacific_Beach,_San_Diego>
的所有可用数据。请注意,在这种情况下,它不包含dbpedia-owl:wikiPageRedirects
属性。看来重定向是DBPedia浏览器的内部,不包含在DBPedia数据中。
使用上述查询将帮助您找到数据中的实际内容(在这种情况下没有什么非常有趣的。)
答案 1 :(得分:4)
Pacific Beach, San Diego不会重定向到任何内容,但它是许多资源的重定向目标:
是dbo:wikiPageRedirects of
- DBR:Pacific_Beach,_CA
- DBR:Pacific_Beach,_California
- DBR:Pacific_Beach,_San_Diego,_CA
- DBR:Pacific_Beach,_San_Diego,_California
- DBR:Pacific_Beach,_San_Diego_California
这意味着您的查询的修改版本应该可以正常工作:
PREFIX s: <http://dbpedia.org/resource/Pacific_Beach,_San_Diego>
PREFIX dbp: <http://dbpedia.org/property/>
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT * WHERE {
OPTIONAL { s: dbp:officialName ?officialName . }
OPTIONAL { s: dbp:name ?foaf_name . }
#-- ... [ about 20 more lines like the above ] ...
} LIMIT 2
请注意,使用前缀来缩写单个IRI有点不寻常。使用值块来绑定特定变量会更常见,您可以在查询的其余部分中使用该变量。也就是说,我会将该查询写为:
PREFIX dbp: <http://dbpedia.org/property/>
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT * WHERE {
values ?s { <http://dbpedia.org/resource/Pacific_Beach,_San_Diego> }
OPTIONAL { ?s dbp:officialName ?officialName . }
OPTIONAL { ?s dbp:name ?foaf_name . }
#-- ... [ about 20 more lines like the above ] ...
} LIMIT 2;
这样做的好处是,如果您想搜索其他城市的值,您只需将它们添加到值列表中即可。现在,如果要添加重定向到其他内容的值,那不是问题。您只想添加一个非可选模式,以帮助您关注重定向目标:
SELECT * WHERE {
values ?x { <http://dbpedia.org/resource/Pacific_Beach,_California> }
?x dbo:wikiPageRedirects* ?s .
OPTIONAL { ?s dbp:officialName ?officialName . }
OPTIONAL { ?s dbp:name ?foaf_name . }
#-- ... [ about 20 more lines like the above ] ...
} LIMIT 2
作为最后一点,请注意,如果您从浏览器复制并粘贴URI,请确保在查询中使用正确的URI。当您在浏览器中访问DBpedia资源(例如 http://dbpedia.org/ resource / foo )时,您将被重定向到人类可读的表单浏览器中的http://dbpedia.org/ 页面 / foo 。这只是DBpedia的一个怪癖。 (实际上,他们应该使用内容类型协商,并在Web浏览器发出请求时返回前者的HTML文档。)