【问题标题】:How to remove unreadable parts for Sparql Query result?如何删除 Sparql 查询结果的不可读部分?
【发布时间】:2014-10-08 00:19:10
【问题描述】:

查询

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

输出:

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

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

I got the query from the link.

【问题讨论】:

  • 不可读是什么意思?这些是发音指南,它们是摘要的一部分。毕竟,您的查询要求提供文章摘要......
  • 感谢您的回复。我想要摘要,但可以选择删除那些发音指南吗??
  • 好吧,如果您想以编程方式执行此操作,您需要确定如何检测要删除的内容。您能否准确指定要删除的内容?例如,您可以删除括号中的任何文本。这可能会比你想要的更多,但它可能会成功。

标签: rdf sparql dbpedia


【解决方案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

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

?cleanAbstract:罗马是意大利的一座城市和特殊的公社。罗马是意大利的首都,也是罗马省和拉齐奥大区的首都。它在 1,285.3 平方公里的土地上拥有 270 万居民,也是该国最大的……

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多