如何从DBPedia中检索带有标点符号的人名?

Fro*_*own 2 uri r sparql 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)
Run Code Online (Sandbox Code Playgroud)

事实证明这是一个错误:XML内容似乎不是XML:'Virtuoso 37000错误SP030:SPARQL编译器,第3行:'Vimariensis'之前的语法错误')'.但是,如果我将查询更改为:

    endpoint="http://de.dbpedia.org/sparql"
    query= "SELECT COUNT (*){
    <http://de.dbpedia.org/resource/Johannes_Aurifaber_(Vimariensis)> ?p ?o 
    }"
    qd=SPARQL(endpoint,query)
Run Code Online (Sandbox Code Playgroud)

一切都很顺利.但有没有办法修改第一个查询,因为查询人名列表更方便.

Art*_*mis 5

您应该能够放在 \特殊字符之前,它是一个有效的SPARQL查询.这是一个有效的SPARQL查询:

SELECT (count(*) as ?count)
where {
    dbpedia-de:Johannes_Aurifaber_\(Vimariensis\)  ?p ?o 
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述 但是,每个端点都有一些特定的限制.因此,(根据约书亚的评论),Virtuoso只允许许多不合法的事情,并且不接受任何合法的事情.