DBpedia SPARQL查询如何跟随重定向获取Pan_troglodytes缩略图
问题原因
dbpedia:Pan_troglodytes在DBpedia中仅作为重定向实体存在,本身未挂载abstract、thumbnail这类描述属性,对应属性全部存储在它的重定向目标实体dbpedia:Chimpanzee上,所以原查询无返回结果。
调整后的查询方案
DBpedia用dbo:wikiPageRedirects(和你原查询用的dbpedia-owl是同一个命名空间的不同简写,可通用)属性存储维基百科的页面重定向关系,我们可以先查询重定向目标,再从目标实体获取所需属性:
prefix dbpedia: <http://dbpedia.org/resource/> prefix dbpedia-owl: <http://dbpedia.org/ontology/> SELECT * WHERE { # +号为SPARQL属性路径语法,支持匹配1层及以上的多重定向 dbpedia:Pan_troglodytes dbpedia-owl:wikiPageRedirects+ ?target . ?target dbpedia-owl:abstract ?abstract; dbpedia-owl:thumbnail ?thumbnail . # 仅保留中文摘要,不需要可删除该行 FILTER(LANG(?abstract) = "zh") }
通用兼容版本
如果需要同时兼容无重定向的实体(比如直接查询dbpedia:Chimpanzee也能正常返回结果),可以用UNION扩展逻辑:
prefix dbpedia: <http://dbpedia.org/resource/> prefix dbpedia-owl: <http://dbpedia.org/ontology/> SELECT * WHERE { { # 场景1:实体本身有目标属性,无需重定向 dbpedia:Pan_troglodytes dbpedia-owl:abstract ?abstract; dbpedia-owl:thumbnail ?thumbnail . } UNION { # 场景2:实体需要重定向到目标页获取属性 dbpedia:Pan_troglodytes dbpedia-owl:wikiPageRedirects+ ?target . ?target dbpedia-owl:abstract ?abstract; dbpedia-owl:thumbnail ?thumbnail . } FILTER(LANG(?abstract) = "zh") }
内容的提问来源于stack exchange,提问作者duhaime
相关产品推荐
相关产品推荐

