【问题标题】:How to query for publication date of books using SPARQL in DBPEDIA如何在 DBPEDIA 中使用 SPARQL 查询书籍的出版日期
【发布时间】:2017-03-11 22:33:52
【问题描述】:

我正在尝试检索 DBpedia 中书籍的出版日期和页数。我尝试了以下查询,它给出了空结果。我看到这些是 book(http://mappings.dbpedia.org/server/ontology/classes/Book) 下的属性,但无法检索。

我想知道代码中是否有错误,或者 dbpedia 是否没有存储这些与书籍相关的日期。

SELECT  ?book  ?genre ?date ?numberOfPages
WHERE {
     ?book rdf:type dbpedia-owl:Book .
     ?book dbp:genre ?genre .
     ?book dbp:firstPublicationDate ?date .
     OPTIONAL {?book dbp:numberOfPages ?numberOfPages .}
     }

【问题讨论】:

  • 试试dbp:releaseDate
  • 谢谢你的工作。如果您能告诉我为什么“dbp:firstPublicationDate”不起作用会很有帮助。
  • DBpedia 通过一组不断发展的提取器/转换器从 Wikipedia 内容中填充。如果您想要的数据不存在提取器,或者数据不在 Wikipedia 上,或者映射与您期望的不一样……您将不会得到您期望的结果。

标签: sparql ontology dbpedia sparqlwrapper


【解决方案1】:

dbp:firstPublicationDate 不起作用有两个原因:

首先,正如第一个答案中所指出的,您使用了错误的前缀。

但是即使你改正它,你会发现你仍然没有结果。那么最好的办法是用最少数量的模式进行测试,在你的情况下,你应该对第一次出版日期的书,只有两个三重模式。如果你仍然没有得到结果,你应该测试<http://dbpedia.org/ontology/firstPublicationDate> 是如何与这样的查询一起使用的:

SELECT  ?class (COUNT (DISTINCT ?s) AS ?instances)
WHERE {

     ?s <http://dbpedia.org/ontology/firstPublicationDate> ?date ;
        a ?class

     }

GROUP BY ?class
ORDER BY DESC(?instances)

LIMIT 1000

【讨论】:

  • 对,看来该属性更多用于漫画等,即定期出版的书面作品。
【解决方案2】:

基于映射的属性使用命名空间http://dbpedia.org/ontology/,因此,前缀必须是dbo 而不是dbp,它代表http://dbpedia.org/property/

PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbp: <http://dbpedia.org/property/>

SELECT  ?book  ?genre ?date ?numberOfPages
WHERE {
     ?book a dbo:Book ;
           dbp:genre ?genre ;
           dbo:firstPublicationDate ?date .
     OPTIONAL {?book dbp:numberOfPages ?numberOfPages .}
     }

一些额外的 cmets:

  • 将前缀添加到 SPARQL 查询中,以便其他人可以毫无例外地运行它(将来也可以) - 当前的 SPARQL 查询使用 dbpedia-owl,但这个在 official DBpedia 上不再预定义 -它改为 dbo
  • 这将我带到第二点 -> 如果您使用的是公共 SPARQL 端点,请显示其 URL
  • 您可以开始调试您自己的 SPARQL 查询,只需从其中的一部分开始,然后添加更多三元组模式,例如在您的情况下,您可以使用

    检查该属性是否有任何三元组
    PREFIX dbp: <http://dbpedia.org/property/>
    
    SELECT * WHERE {?book dbp:firstPublicationDate ?date } LIMIT 10
    

更新

正如 Ivo Velitchkov 在下面的回答中注意到的那样,dbo:firstPublicationDate 属性仅用于漫画等,即定期出版的书面作品。因此,结果将为空。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多