如何删除 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
我正在尝试使用 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