转义SPARQL查询中的特殊字符

pas*_*kun 5 java sparql jena arq

我正在尝试查询dpbedia以使用Jena和ARQ获取某些维基百科文章的类别
例如:

select ?category { dbpedia:ARTICLE_NAME dcterms:subject ?category }  
Run Code Online (Sandbox Code Playgroud)

下面是一个工作查询SPARQL结果的示例

问题是ARTICLE_NAME中有特殊字符,例如"Parma_F.C.",其中有"."

select ?category { dbpedia:Parma_F.C. dcterms:subject ?category } 
Run Code Online (Sandbox Code Playgroud)

错误

所以,我想问你是否有人有解决方案.
提前致谢

Jee*_*tra 8

标识符dbpedia:Parma_F.C.是所谓的前缀名称,即完整URI的缩写形式.SPARQL 1.1查询语言规范中描述了它的完整语法规则.

问题特别是在前缀名称末尾的句号.根据SPARQL语法,除非转义,否则前缀名称不能以句号结束.修复只是使用反斜杠:

 dbpedia:Parma_F.C\. 
Run Code Online (Sandbox Code Playgroud)

你也可以做一个替代方案,就是写出完整的URI.该dbpedia前缀映射到http://dbpedia.org/resource/命名空间,所以完整的URI在SPARQL将成为:

 <http://dbpedia.org/resource/Parma_F.C.>
Run Code Online (Sandbox Code Playgroud)

并且完整查询将变为:

select ?category { <http://dbpedia.org/resource/Parma_F.C.> dcterms:subject ?category } 
Run Code Online (Sandbox Code Playgroud)