如何转义此 SPARQL 查询中的引号?
SELECT * WHERE { <http://dbpedia.org/resource/Andre_\"Dede\"_Sabino> rdfs:label ?lbl . ?sub a foaf:Person . ?sub rdfs:label ?lbl . optional {?sub dbo:birthDate ?birthDate .} optional {?sub dbo:birthPlace ?birthPlace . ?birthPlace a dbo:Location } optional {?sub dbo:birthPlace ?birthPlace2 .} ?sub dbo:abstract ?abstract . filter(langMatches(lang(?lbl), "en")) filter(langMatches(lang(?abstract ), "en")) } LIMIT 10
我已经尝试过
""
和\"
和'
。
IRI 中不允许使用引号字符 (
"
)(一般情况下,不仅仅是在 SPARQL 中)。它必须被百分比编码为%22
。
所以 IRI 不会
http://dbpedia.org/resource/Andre_"Dede"_Sabino
但是
http://dbpedia.org/resource/Andre_%22Dede%22_Sabino
(浏览器通常会在地址栏中显示 IRI 的未编码形式,但是在复制粘贴时,您应该获得百分比编码形式。)
如果您需要在 SPARQL 中的字符串值中包含引号字符,可以使用反斜杠对其进行编码:
?person schema:name "Andre \"Dede\" Sabino" .