2014-09-18 55 views
0

我有一個問題,我需要建立一個單一的查詢DBpedia,如果我給這些輸入中的任何一個,如城市名稱或人名或學院名稱或一個儀器名稱可以作爲輸出得到其摘要?例如, 例如, 紐約 - 紐約州是美國東北部和中大西洋地區的一個州......火星 - 火星是第四顆來自太陽的行星,也是太陽系中第二小的行星系統.... 邁克爾傑克遜邁克爾約瑟夫傑克遜是美國歌手,詞曲作者,舞蹈演員和演員......查詢DBpedia以獲取不同輸入的摘要

我已經嘗試過,但它並不適用於所有。

SELECT ?abstract WHERE { 
<http://dbpedia.org/resource/New_York> 
<http://dbpedia.org/ontology/abstract> 
?abstract 
FILTER langMatches(lang(?abstract), "en") 
} 

回答

3

如果您打算獲取多件事情的摘要,請在VALUES塊中提供多件事情。我發現匹配?name對基於名稱的搜索非常有效。

SELECT DISTINCT ?abstract WHERE { 
    [ rdfs:label ?name 
    ; dbpedia-owl:abstract ?abstract 
    ] . 
    FILTER langMatches(lang(?abstract),"en") 
    VALUES ?name { "New York"@en } 
} 
LIMIT 10 
+0

但是,當我寫VALUES?name {「New York」「Car」@en}它沒有給出任何輸出。 – user2022416 2014-09-23 15:17:47

+0

如果我在java中添加這個查詢,在行:VALUES?name {「New York」@en}它給出的錯誤:語法錯誤,插入「;」完成LocalVariableDeclarationStatement – user2022416 2014-09-23 15:25:30

+0

在java中,我可以聲明一個字符串值=「紐約」,並在Sparql查詢中聲明此字符串? – user2022416 2014-09-24 00:07:13