如何在SPARQL中过滤DBpedia结果

时间:2015-05-12 07:19:16

标签: java sparql jena dbpedia

我有点问题...... 如果我有这个简单的SPARQL查询

SELECT ?abstract 
WHERE {
<http://dbpedia.org/resource/Mitsubishi> <http://dbpedia.org/ontology/abstract> ?abstract.
FILTER langMatches( lang(?abstract), 'en')}

我有这个结果: SPARQL Result 它有非英文字符...... 有什么想法如何删除它们并只检索英文单词?

1 个答案:

答案 0 :(得分:3)

您需要在结果中准确定义您想要和不想要的字符,但是您可以使用替换来替换范围之外的字符,例如空字符串。如果您想要排除除Basic Basic,Latin-1 Supplement,Latin Extended-A和Latin Extended-B范围之外的所有内容(最终为\ u0000 \ u024f),您可以执行以下操作:

SELECT ?abstract ?cleanAbstract
WHERE {
  dbpedia:Mitsubishi dbpedia-owl:abstract ?abstract 
  FILTER langMatches( lang(?abstract), 'en')
  bind(replace(?abstract,"[^\\x{0000}-\\x{024f}]","") as ?cleanAbstract)
}

SPARQL results

甚至更简单:

SELECT (replace(?abstract_,"[^\\x{0000}-\\x{024f}]","") as ?abstract)
WHERE {
  dbpedia:Mitsubishi dbpedia-owl:abstract ?abstract_
  FILTER langMatches(lang(?abstract_), 'en')
}

SPARQL results

  三菱集团(MitsubishiGurūpu)(也称为三菱集团)   三菱集团公司或三菱公司)是一组   日本自治的跨国公司覆盖范围广泛   分享三菱品牌,商标和遗产的企业   三菱集团公司形成了一个松散的实体,即三菱   Keiretsu,经常被日本和美国媒体引用   官方报道;一般来说,这些公司都来自于   zaibatsu同名。前25家公司也是其中的一员   三菱Kin'yōkai,或“星期五俱乐部”,并每月见面。在   另外三菱网委员会存在便利   通过门户网站传播和访问三菱品牌   站点。

您可能会发现Latin script in Unicode维基百科文章很有用。