SPARQL查询以检索所有DBPedia grenre

SPARQL查询以检索所有DBPedia grenre,sparql,semantic-web,dbpedia,Sparql,Semantic Web,Dbpedia,我可以使用以下查询检索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 . } 前缀rdf: 前缀本体: 选择distinct?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 . } 
前缀rdf:
前缀本体:
选择distinct?bookUri
其中{?bookUri rdf:type ontology:Book.}

但我无法用几乎完全相同的查询检索literaryGenre

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 . } 
前缀rdf:
前缀本体:
选择distinct?genreUri
其中{?genreUri rdf:类型本体:literaryGenre.}


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

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

关于:文学体裁

类型为ObjectProperty的实体,来自命名 图形:,在数据空间内: dbpedia.org

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

因此,您可以通过以下查询查看书籍的文学类型:

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

不过,这里有用的是,您可以检查作为文学体裁属性对象的资源,例如,在这样做的过程中,您可以找到一些可能帮助您找到更多的属性。例如,冒险小说具有以下特性:

rdf:type        yago:LiteraryGenres
dcterms:subject category:Literary_genres
dcterms:subject category:Adventure_fiction
然而,您在浏览该页面时可能会注意到,Advenure_小说不仅是
dbpedia owl:literaryGenre
语句的对象,而且也是
dbpedia owl:genre
dbpedia owl:format
的对象。(我忽略了旧的
dbpprop
属性)因此您有两个选项:

  • 您可以查询具有
    rdf:type yago:LiteraryGenres
    ,或具有
    dcterms:subject category:literal_genres
    ,这样的查询将生成243个结果:

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

  • 您可以请求
    dbpedia owl:genre
    dbpedia owl:format
    的对象(共8434个):

    但是,您会注意到,在该查询中,
    格式
    的一些结果更像是一种出版媒介,例如,
    文档
    音乐下载
    。因此,坚持那些明确的类型可能更有意义(7940个结果):

    但是,从这些结果来看,许多类型不是文学类型,而是音乐类型,这意味着您可能更喜欢查看
    literaryGenre
    属性(936个结果):


  • 基于这些结果,最好的选择似乎是选择属于
    dbpedia owl:literaryGenre
    语句的对象。

    第一次和第二次查询似乎是相同的。第一个应该是
    ?bookurirdf:type ontology:Book
    ,否?是!我的复制粘贴错误。现在修好。
    select distinct ?genre where {
      { [] dbpedia-owl:format ?genre } 
      UNION 
      { [] dbpedia-owl:genre ?genre }
      UNION
      { [] dbpedia-owl:literaryGenre ?genre }
    }
    
    select distinct ?genre where {
      { [] dbpedia-owl:genre ?genre }
      UNION 
      { [] dbpedia-owl:literaryGenre ?genre }
    }
    
    select distinct ?genre where {
      [] dbpedia-owl:literaryGenre ?genre
    }