[英]DBPedia: SPARQL query on field starting with literal
我正在嘗試獲取公司列表的相應DBPedia條目。 我不知道如何進行近似匹配。 示例:在DBPedia中,“ Audi”被稱為“ Audi AG”,而“ Novartis”被稱為“ Novartis International AG”(foaf:name)。 如何搜索rdf:type = dbo:Company且名稱最接近我提供的名稱的條目?
我正在使用SPARQL作為查詢語言。 (但如果有優勢,我願意改變。)
select ?company
where {
?company foaf:name "Novartis"@en.
?company a dbo:Company.
}
LIMIT 100
我沒有獲得成功,但應該找到http://dbpedia.org/page/Novartis 。 匹配名稱的開頭可能就足夠了。
對於DBpedia,最好的選擇可能是使用bif:contains
全文搜索偽屬性:
SELECT ?company {
?company a dbo:Company.
?company foaf:name ?name.
?name bif:contains "Novartis"@en.
}
此功能特定於為DBpedia SPARQL端點提供支持的Virtuoso數據庫。
如果要堅持使用標准SPARQL ,以僅在名稱的開頭進行匹配 :
SELECT ?company {
?company a dbo:Company.
?company foaf:name ?name.
FILTER strStarts(?name, "Novartis")
}
與全文功能不同,此版本無法使用文本索引,因此速度較慢。
如果您想要更靈活的匹配 :
SELECT ?company {
?company a dbo:Company.
?company foaf:name ?name.
FILTER contains(lCase(?name), lCase("Novartis"))
}
這將在名稱中的任何位置找到不區分大小寫的匹配項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.