如何删除Sparql Query结果中不可读的部分?

时间:2014-10-07 02:17:19

标签: rdf sparql dbpedia

查询

select distinct ?abstract where {
      [ rdfs:label "Rome"@en ;
        dbpedia-owl:abstract ?abstract ]
      filter langMatches(lang(?abstract),'en')
    }

输出:

  

罗马(/roʊm/;意大利语:罗马语发音[roːma];拉丁语:Rōma)是意大利的一个城市和特殊的社区(名为“Roma Capitale”)......

我如何删除“(/roʊm/;意大利语:罗马语发音[roːma];拉丁语:Rōma)”,其中包含不可读的字符(即发音指南)?

I got the query from the link.

1 个答案:

答案 0 :(得分:1)

您可以使用这样的查询删除括号中的文字:

select ?abstract ?cleanAbstract where {
  values ?x { dbpedia:Rome }

  ?x dbpedia-owl:abstract ?abstract
  filter langMatches(lang(?abstract),'en')

  bind( replace( str(?abstract), '\\([^(]*\\)', "" ) as ?cleanAbstract )
}

SPARQL results

  

?摘要:罗马(/roʊm/;意大利语:罗马语发音[roːma];拉丁语:Rōma)是意大利的一个城市和特殊的社区(名为“Roma Capitale”)。罗马是意大利的首都,也是罗马省和拉齐奥地区的首府。拥有270万居民,面积1,285.3平方公里(496.3平方英里),也是全国最大的......

  

?cleanAbstract:罗马是意大利的一个城市和特色社区。罗马是意大利的首都,也是罗马省和拉齐奥地区的首府。拥有270万居民,面积1,285.3平方公里,也是全国最大的......

当然,发音不是括号中唯一的发音。例如,平方英里的面积用括号表示。但是,如果摘要遵循一般约定,可以删除括号中的文本而不更改文本的基本内容,这可能对您有用。当然,您可以改进正则表达式以更好地处理括号周围的空格,或者只删除具有某些“非典型”字符的空格,如果您可以定义一些。