1

<http://dbpedia.org/ontology/Book>我可以使用以下查询检索 DBpedia中所有书籍的列表:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX ontology: <http://dbpedia.org/ontology/> 
select distinct ?bookUri  
where { ?bookUri  rdf:type ontology:Book . } 

SPARQL 结果

但我无法<http://dbpedia.org/ontology/literaryGenre>用几乎完全相同的查询检索literatureGenre。

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX ontology: <http://dbpedia.org/ontology/> 
select distinct ?genreUri  
where { ?genreUri  rdf:type ontology:literaryGenre . } 

SPARQL 结果

我完全糊涂了。这些查询可以在DBpedia SPARQL 端点上运行。

4

1 回答 1

2

问题是它http://dbpedia.org/ontology/literaryGenre不是一个owl:Class,而是一个对象属性。实际上,在您链接到的页面http://dbpedia.org/ontology/literaryGenre上,我们读到:

简介:文学体裁

类型实体:ObjectProperty,来自命名图:http ://dbpedia.org/resource/classes#,在数据空间:dbpedia.org

文学体裁是文学作品的一个范畴。体裁可能由文学技巧、语气、内容,甚至(如小说)长度决定。

因此,您可以使用如下查询从公共端点查看书籍的文学体裁:

select distinct * where {
  ?book dbpedia-owl:literaryGenre ?genre .
}
limit 100

SPARQL 结果

但是,那里有用的是,您可以检查作为文学体裁属性对象的资源,例如http://dbpedia.org/resource/Adventure_Novel,在此过程中,您可以找到一些可能对您有所帮助的属性寻找更多。例如,Adventure_Novel 具有以下属性:

rdf:type        yago:LiteraryGenres
dcterms:subject category:Literary_genres
dcterms:subject category:Adventure_fiction

但是,您在浏览该页面时可能还会注意到,Advenure_Novel 不仅是dbpedia-owl:literaryGenrestatements 的对象,而且也是dbpedia-owl:genreand的对象dbpedia-owl:format。(我忽略了旧dbpprop属性。)所以你有两个选择:

  1. rdf:type yago:LiteraryGenres您可以使用类似这样的查询来查询具有或具有的事物,dcterms:subject category:Literary_genres该查询会产生 243 个结果:

    select distinct ?genre where {
      { ?genre rdf:type yago:LiteraryGenres }
      UNION 
      { ?genre dcterms:subject category:Literary_genres }
    }
    

    SPARQL 结果

  2. 你可以要求对象dbpedia-owl:genre和的东西dbpedia-owl:format(有8434个):

    select distinct ?genre where {
      { [] dbpedia-owl:format ?genre } 
      UNION 
      { [] dbpedia-owl:genre ?genre }
      UNION
      { [] dbpedia-owl:literaryGenre ?genre }
    }
    

    SPARQL 结果

    但是,您会注意到,在该查询中,有一些结果format更像是发布媒体,例如,DocudramaMusic_download. 因此,坚持那些明确的流派可能更有意义(7940 个结果):

    select distinct ?genre where {
      { [] dbpedia-owl:genre ?genre }
      UNION 
      { [] dbpedia-owl:literaryGenre ?genre }
    }
    

    SPARQL 结果

    但是,查看这些结果,许多类型不是文学类型,而是例如音乐类型,这意味着您可能更好地只查看literaryGenre属性(936 个结果):

    select distinct ?genre where {
      [] dbpedia-owl:literaryGenre ?genre
    }
    

    SPARQL 结果

基于这些结果,看起来最好dbpedia-owl:literaryGenre的选择是选择作为陈述对象的事物。

于 2013-08-11T22:13:37.310 回答