如何删除SPMLQL中的dbpedia查询结果中的括号?

时间:2017-10-10 15:03:20

标签: database sparql dbpedia

我正在尝试使用 CONSTRUCT 查询DBpedia和SPARQL,以获取国家及其首都的列表,并以Turtle格式解析结果:

CONSTRUCT {
  ?country dbo:capital ?city.
  ?country a dbo:Country.
} WHERE {
  ?country dbo:capital ?city.
  ?country a dbo:Country
}

但是,如果国家/地区名称中有括号()_,则结果不会正确使用前缀。

示例:

dbr:Virginia  dbo:capital  <http://dbpedia.org/resource/Richmond,_Virginia>

有没有自动修复方法?我真的很期待手动解决这个问题......

1 个答案:

答案 0 :(得分:0)

说实话,我不明白你为什么要这样做,并且你仍然愿意处理那些不能用Turtle语法作为前缀(不能)的案例。但是,给你一个粗略的想法:

CONSTRUCT {
  ?country dbo:capital ?city. 
  ?country a dbo:Country.
} WHERE {
  ?country dbo:capital ?city_tmp. 
  ?country a dbo:Country
  ## here you would handle the "fix", e.g. use a regex and find some replacement
  BIND(uri(REPLACE(str(?city_tmp), ",_", "_", "i")) AS ?city)
}

您可以在查询中看到我只使用了匹配,_的虚拟正则表达式和替换字符串_。 例如,http://dbpedia.org/resource/Nancy,_France将替换为dbr:Nancy_France