【问题标题】:Escape special characters in SPARQL queries转义 SPARQL 查询中的特殊字符
【发布时间】:2014-11-09 16:06:13
【问题描述】:

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

select ?category { dbpedia:ARTICLE_NAME dcterms:subject ?category }  

这是一个有效查询的示例
SPARQL results

问题是当 ARTICLE_NAME 中有特殊字符时,例如“Parma_F.C.”,其中有“.”。

select ?category { dbpedia:Parma_F.C. dcterms:subject ?category } 

ERROR

所以,我想问你是否有人对此有解决方案。
在此先感谢

【问题讨论】:

    标签: java sparql jena arq


    【解决方案1】:

    标识符dbpedia:Parma_F.C.是所谓的前缀名,即完整URI的缩写形式。 SPARQL 1.1 Query Language specification 中描述了它的完整语法规则。

    问题特别是前缀名称末尾的句号。根据 SPARQL 语法,前缀名称不能以句号结尾,除非它被转义。解决方法就是使用反斜杠:

     dbpedia:Parma_F.C\. 
    

    您还可以做的替代方法是写出完整的 URI。 dbpedia 前缀映射到 http://dbpedia.org/resource/ 命名空间,因此 SPARQL 中的完整 URI 将变为:

     <http://dbpedia.org/resource/Parma_F.C.>
    

    完整的查询将变为:

    select ?category { <http://dbpedia.org/resource/Parma_F.C.> dcterms:subject ?category } 
    

    【讨论】:

    • 感谢您的回答。我试图用完整的 URI 替换它,但它仍然不起作用。我可以请你告诉我你是怎么做到的吗?您能否通过 dbpedia API 粘贴一个链接?再次感谢
    • @JeenBroekstra 哪些字符需要在完整的 URI 语法中转义?我假设它是&lt;, &gt;, `\`?
    猜你喜欢
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 2016-01-14
    • 2014-12-14
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多