如何从 DBPedia 中检索带有标点符号的人名?
How to retrieve person names with punctuation marks from DBPedia?
我目前正在使用 R 中的 SPARQL 包在 DBPedia 中查询人名列表。当我通过 SPARQL 检索人名列表时,出现了一些 URI 形式的名字的问题,其中包含 标点符号(如“,”或“(”)不能被SPARQL查询识别,例如:
endpoint="http://de.dbpedia.org/sparql"
query= "SELECT COUNT (*){
dbpedia-de:Johannes_Aurifaber_(Vimariensis) ?p ?o
}"
qd=SPARQL(endpoint,query)
原来是报错:XML content does not seem to be XML: 'Virtuoso 37000 Error SP030: SPARQL compiler, line 3: syntax error at 'Vimariensis' 在 ')' 之前。
但是,如果我将查询更改为:
endpoint="http://de.dbpedia.org/sparql"
query= "SELECT COUNT (*){
<http://de.dbpedia.org/resource/Johannes_Aurifaber_(Vimariensis)> ?p ?o
}"
qd=SPARQL(endpoint,query)
一切顺利。但是有没有办法修改第一个查询,因为查询人名列表更方便。
您应该可以在特殊字符前加上 \
,这是一个有效的 SPARQL 查询。这是一个有效的 SPARQL 查询:
SELECT (count(*) as ?count)
where {
dbpedia-de:Johannes_Aurifaber_\(Vimariensis\) ?p ?o
}
但是,每个端点都有一些特定的限制。因此,(根据 Joshua 的评论)Virtuoso 只是允许很多不合法的事情,并且不接受所有合法的事情。
我目前正在使用 R 中的 SPARQL 包在 DBPedia 中查询人名列表。当我通过 SPARQL 检索人名列表时,出现了一些 URI 形式的名字的问题,其中包含 标点符号(如“,”或“(”)不能被SPARQL查询识别,例如:
endpoint="http://de.dbpedia.org/sparql"
query= "SELECT COUNT (*){
dbpedia-de:Johannes_Aurifaber_(Vimariensis) ?p ?o
}"
qd=SPARQL(endpoint,query)
原来是报错:XML content does not seem to be XML: 'Virtuoso 37000 Error SP030: SPARQL compiler, line 3: syntax error at 'Vimariensis' 在 ')' 之前。 但是,如果我将查询更改为:
endpoint="http://de.dbpedia.org/sparql"
query= "SELECT COUNT (*){
<http://de.dbpedia.org/resource/Johannes_Aurifaber_(Vimariensis)> ?p ?o
}"
qd=SPARQL(endpoint,query)
一切顺利。但是有没有办法修改第一个查询,因为查询人名列表更方便。
您应该可以在特殊字符前加上 \
,这是一个有效的 SPARQL 查询。这是一个有效的 SPARQL 查询:
SELECT (count(*) as ?count)
where {
dbpedia-de:Johannes_Aurifaber_\(Vimariensis\) ?p ?o
}