如何搜索具有不同语言代码的字符串

时间:2017-03-03 22:27:29

标签: sparql

我需要使用相同的字符串搜索两个图表中的项目,但不同的语言代码(“xx”和“xx”@eng - 来自wordnet)。明显 “xx”@en不等于“xx”@eng。

可以使用(前缀nlp适当定义):

select * where {
   ?a nlp:lemma ?as . 
   ?b rdfs:label ?bs . 
   filter (str(?as)=str(?bs)) . 
     # more code using ?a and ?b
}

然而,这个查询花费的时间太长而且浪费。应该可以做类似的事情:

?a nlp:lemma ?s . 
?b rdfs:label ?s .

但是我无法看到 - 如何手动将wordnet三元组中的所有@eng更改为@en - 我宁愿不这样做。

任何解决方案? 谢谢!

1 个答案:

答案 0 :(得分:1)

您可以通过仅对eneng进行过滤来减少搜索空间,但是比较语言标记字符串的字符串部分的唯一方法是将它们转换为字符串。 / p>

即。如果存在除eneng以外的语言标记字符串,则以下内容可能更有效:

select * where {
   ?a nlp:lemma ?as . 
   ?b rdfs:label ?bs . 
   filter (lang(?as) = "en" || lang(?as) = "eng")
   filter (str(?as)=str(?bs)) . 
     # more code using ?a and ?b
}