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

How to remove parenthesis in dbpedia query result in SPARQL?

我正在尝试使用 CONSTRUCT 查询带有 SPARQL 的 DBpedia,以获取国家及其首都的列表并将结果解析回 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>

有没有自动解决这个问题的方法?我真的不希望手动修复此问题...

老实说,我不明白你为什么要这样做,而且你想如何处理没有(不能)以 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