2016-05-03 155 views
1

我最近潛入了語義網的世界。到目前爲止,這一直很順利。 重點...我試圖從dbpedia中獲得文章,但是我沒有得到任何結果。對於我在DBpedia本體中看到的,我認爲這應該是正確的。文章是WrittenWork的「子類」,Book也是。我可以通過rdf三元組獲得書籍和他們的信息。當使用與書籍幾乎相同的SPARQL查詢時,我不會得到結果。這很奇怪,因爲我知道維基百科中有文章的引用。如何從dbpedia中檢索文章?

圖書查詢:

SELECT DISTINCT ?book 
WHERE { ?book a dbo:Book . } 

如果我代替DBO:書爲DBO:第一條,我什麼也沒得到。我在這裏測試:http://dbpedia.org/sparql

有人能指點我正確的方向嗎?

+0

前綴'dbo:'的命名空間定義是什麼? – scotthenninger

+0

您是否知道DBpedia中的任何資源是一篇文章? –

+0

@scotthenninger它是默認的前綴之一,你可以在http://dbpedia.org/sparql看到 –

回答

4

如果測試其中dbo:WrittenWork subslasses沒有成員,使用此查詢

SELECT DISTINCT * 
WHERE { 
    ?class rdfs:subClassOf dbo:WrittenWork . 
    FILTER NOT EXISTS {?s a ?class } 
} 

你會看到dbo:Article在他們中間。

+0

你說得對。雖然我不知道。我在維基百科發現了一些文章,dbpedia應該獲取信息。 –

+0

哇。這似乎是一種非常低效的方式來說'SELECT DISTINCT * WHERE {?class rdfs:subClassOf dbo:WrittenWork。}'並且沒有得到dbo:Article的任何實例,這似乎是OP的問題。 – scotthenninger

+3

@scotthenninger作爲'dbo:Book'和'dbo:Play'有成員,懷疑我知道'dbo:Article'的正確URI,我的意圖是查看'dbo:WrittenWork'的其他子類沒有成員。該查詢反映了該意圖。一般來說,我更喜歡有一個查詢給出了一些結果,因爲很多情況下沒有結果可能是由於格式錯誤的查詢造成的。 –