簡體   English   中英

DBPedia:以文字開頭的字段上的SPARQL查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM