如何从 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 只是允许很多不合法的事情,并且不接受所有合法的事情。