2013-08-28 52 views
0

我在執行此查詢,以獲取來自DBPedia public SPARQL endpoint的所有化合物的列表。DBPedia查詢缺少某些化合物

SELECT * WHERE { 
    ?y rdf:type dbpedia-owl:Drug. 
    ?y rdfs:label ?Name . 
    OPTIONAL {?y dbpedia-owl:iupacName ?iupacname} . 
    OPTIONAL {?y dcterms:subject ?y1} 
    FILTER (langMatches(lang(?Name),"en")) 
} 
LIMIT 50000 

我下載使用offset參數50000(2個文件)批次。

不知何故Isopropyl_alcohol是沒有得到包括在本即使在頁面存在於

,它有,我正在尋找的屬性?

+0

您有沒有找到解決您的問題的運氣? –

回答

0

這裏有兩個問題。首先是DBpedia Live和DBpedia沒有完全相同的內容。按照DBpedia live webpage

維基百科用戶不斷修正與發生幾乎每一秒更新 維基百科文章。因此,存儲在官方 DBpedia端點中的數據可能很快變得過時,並且需要重新提取維基百科文章 。 DBpedia Live支持DBpedia和Wikipedia之間的這種連續的同步。

該頁面還列出了DBpedia中住兩個SPARQL端點:

但是,你會碰到兩個問題。Isopropyl_alcohol在DBpedia中,其URI是

看那裏,我們看到,異丙醇沒有rdf:type dbpedia-owl:Drug,但只有

,所以你將無法與DBpedia的查詢找到它,因爲它不沒有「dbpedia-owl:Drug」的類型。現在,Isopropyl_alcohol也存在於DBpedia中生活,它的​​網址是

,但它只有在folllowing rdf:type S:

,這樣就不會被通過現場DBpedia中查詢發現,出於同樣的原因。

第二個問題是AndyS pointed out。即使查詢將在DBpedia或DBpedia Live中選擇Isopropyl_alcohol,除非您提供了排序約束,否則limit/offset組合將不能保證返回它,因爲沒有排序約束,服務器可以合法地將相同的一組50000結果返回給你每一次。

+0

感謝您的解決方案。將嘗試它。 – Premraj

0

也許它沒有在您使用的LIMIT/OFFSET組合中找到它。除非您使用ORDER BY,否則服務器沒有義務每次都以相同順序回答查詢,因此您擁有的切片實際上可能不是全部結果。

也許SPARQL網站和live.dbpedia不在步驟中。

嘗試直接詢問異丙醇。

+0

謝謝,但我雜耍極限偏移,直到我得到空白文件 – Premraj