我可以使用以下查询检索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 endpoint上运行。
答案 0 :(得分:2)
问题是http://dbpedia.org/ontology/literaryGenre
不是owl:Class
,而是对象属性。实际上,在您链接到的页面http://dbpedia.org/ontology/literaryGenre上,我们读到了:
关于:文学体裁
Type的实体:ObjectProperty,来自Named 图表:http://dbpedia.org/resource/classes#,在数据空间中: dbpedia.org
文学体裁是一种文学作品。 类型可以由文学技巧,语气,内容甚至决定 (如同小说一样)长度。
因此,您可以使用以下查询查看来自the public endpoint的图书的文学类型:
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结果):< / p>
select distinct ?genre where {
[] dbpedia-owl:literaryGenre ?genre
}
根据这些结果, best 选项看起来就是选择dbpedia-owl:literaryGenre
语句对象的内容。