[英]SPARQL - Filter comment. label and abstract to english and keep integer as well as uri values
我正在嘗試從 DBPedia 獲取有關某些資源的可用信息。 但是,我想過濾掉 label,評論和摘要只有英文。
我原來的查詢是:
SELECT ?property ?value (lang(?value ) as ?lang) { <http://dbpedia.org/resource/England> ?property ?value . }
為了過濾英文結果,我將其修改為:
SELECT ?property ?value (lang(?value ) as ?lang) { <http://dbpedia.org/resource/England> ?property ?value . FILTER(LANG(?value) = "en") }
但是,這樣做我會丟失很多條目和信息,例如人口、密度、position、緯度、經度等等。
我想知道,是否有辦法獲取所有可用條目,但過濾abstract
、 label
和comment
僅使用英文。
我試圖將我的查詢修改為以下內容:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?property ?value (lang(?value ) as ?lang) { <http://dbpedia.org/resource/England> ?property ?value . FILTER(LANG(?rdfs:label) = "en")}
不幸的是,我沒有得到任何結果,因為查詢是錯誤的。 任何幫助將不勝感激。
經過徹底的研究,我已經回答了我自己的問題。 您可以使用FILTER
function 來獲取帶有或不帶有任何@en
或可用language
部分的所有值。 為此,您可以使用以下部分:
FILTER(LANG(?value) = "" || LANGMATCHES(LANG(?value), "en")
但是,這會導致丟失所有可用的uri
和其他links
。 如果還想獲得除英文過濾結果之外的所有鏈接,還需要與開頭的 function 類似的startsWith
。 它在 SPARQL 語言中的等價物稱為strstarts
。 我已在查詢中將以下部分添加到FILTER
中,並且我已經獲得了所有最初需要的結果。
strstarts(str(?value), 'http'))
所以這是結果查詢。 提示我已刪除 PREFIXES,因為我的查詢中不需要它們
SELECT ?property ?value { <http://dbpedia.org/resource/England> ?property ?value .
FILTER(LANG(?value) = "" || LANGMATCHES(LANG(?value), "en") || strstarts(str(?value), 'http'))}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.