繁体   English   中英

SPARQL查询以检索所有DBPedia的文学作品

[英]SPARQL query to retrieve all DBPedia literary grenre

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

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结果

但是我无法使用几乎完全相同的查询来检索literaryGenre <http://dbpedia.org/ontology/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 . } 

SPARQL结果

我完全感到困惑。 这些查询可以在DBpedia SPARQL端点上运行。

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

关于:文学体裁

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

文学体裁是文学创作的一类。 体裁可以通过文学技术,语气,内容,甚至(如小说)长度来确定。

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

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:literaryGenre语句的对象,而且还是dbpedia-owl:genredbpedia-owl:format (我忽略了较早的dbpprop属性。)因此,您有两个选择:

  1. 您可以使用类似这样的查询来查询具有rdf:type yago:LiteraryGenresdcterms: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:genredbpedia-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语句的对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM