[英]SPARQL on REGEX filter name
當我使用直接搜索查詢時,REGEX過濾器名稱上的SPARQL起作用。 它不適用於使用查詢的正則表達式。
PREFIX dbpedia: <http://dbpedia.org/>
PREFIX dbpedia2: <http://dbpedia.org/property/>
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
PREFIX dcterms: <http://dublincore.org/2010/10/11/dcterms.rdf#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX grs: <http://www.georss.org/georss/point>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select distinct ?iri ?logo ?description
{
values ?hasLogo { foaf:depiction dbpedia-owl:thumbnail }
values ?hasName { foaf:name rdfs:label }
?iri a dbpedia-owl:Company ;
dbpedia-owl:abstract ?description ;
filter(regex(?Name, "Lufthansa", "i" )) ;
?hasLogo ?logo .
filter( langMatches(lang(?description),"en") )
}
上面的代碼由於filter(regex(?Name, "Lufthansa", "i" )) ;
不起作用filter(regex(?Name, "Lufthansa", "i" )) ;
如果我使用直接搜索,請輸入?Name "Lufthansa"@en ;
它工作正常。
為什么是這樣?
嘗試通過sparql.org的查詢驗證器運行查詢 。 不合法 看起來您想要以下內容。 您仍然必須以通常的方式獲取變量綁定。 只有這樣,您才能添加其他過濾器。 您不能僅將過濾器表達式代替三元模式(的一部分)。
select distinct ?iri ?logo ?description {
values ?hasLogo { foaf:depiction dbpedia-owl:thumbnail }
values ?hasName { foaf:name rdfs:label }
?iri a dbpedia-owl:Company ;
dbpedia-owl:abstract ?description ;
?hasName ?Name ;
?hasLogo ?logo .
filter langMatches(lang(?description),"en")
filter(regex(?Name, "Lufthansa", "i" )) ;
}
select distinct ?iri ?name ?description {
?iri a dbpedia-owl:Company ;
rdfs:label ?label ;
foaf:name ?name ;
dbpedia-owl:abstract ?description .
#foaf:depiction|dbpedia-owl:thumbnail ?logo .
filter(regex(?name, "\\blufthansa\\b","i" )) .
filter(regex(?label, "\\blufthansa\\b","i" ))
# filter( langMatches(lang(?description),"en") )
}
limit 100
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.