我正在尝试使用 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>
有没有自动修复方法?我真的很期待手动解决这个问题......
答案 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