[英]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 . }
但是我无法使用几乎完全相同的查询来检索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 . }
我完全感到困惑。 这些查询可以在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
但是,这里有用的是,您可以检查作为文学体裁属性对象的资源,例如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:genre
和dbpedia-owl:format
。 (我忽略了较早的dbpprop
属性。)因此,您有两个选择:
您可以使用类似这样的查询来查询具有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 } }
您可以要求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 } }
但是,您会注意到,在该查询中,有一些format
结果更像是发布媒体,例如Docudrama
和Music_download
。 因此,坚持使用那些明确类型的游戏可能更有意义(7940个结果):
select distinct ?genre where { { [] dbpedia-owl:genre ?genre } UNION { [] dbpedia-owl:literaryGenre ?genre } }
但是,从这些结果来看,许多流派不是文学流派,而是例如音乐流派,这意味着您仅查看literaryGenre
属性(936个结果)就可能更好:
select distinct ?genre where { [] dbpedia-owl:literaryGenre ?genre }
根据这些结果, 最好的选择似乎是选择dbpedia-owl:literaryGenre
语句的对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.