2014-01-05 20 views
2

能從URI中形成QNames,如http://dbpedia.org/resource/Jesuit_Church,_MannheimDbpedia列出這個爲dbpedia:Jesuit_Church,_Mannheim,但是當我運行這個QName例如通過Jena的海龜解析器,我得到以下異常:如何在QName中表示逗號(特別是在Turtle文檔中)

Not a valid token for an RDF term: [COMMA] 

這使得下Turtle specification感,這顯然不包括從的QName逗號。但Namespaces in XML 1.0 specification顯然允許「任何Unicode字符,不包括代理塊,FFFE和FFFF」。

那麼哪個規範是「正確」的,以及如何(如果有的話)我可以在Turtle文檔中以縮寫形式使用這樣的URI嗎?我試過percent encoding,但在這種情況下,Jena的海龜解析器顯然返回一個保留轉義URI的模型,即http://dbpedia.org/resource/Jesuit_Church%2C_Mannheim而不是http://dbpedia.org/resource/Jesuit_Church,_Mannheim,並導致後來的字符串比較(在我的代碼中)失敗。

UPDATE我一定是在逃跑的時候犯了一個錯誤。正如在接受的答案中指出的那樣,確實有可能使用dbpedia:Jesuit_Church\,_Mannheim,例如,與耶拿2.11.0。

回答

4

在龜(CR)的說明它says

前綴名稱是XML的QName的一個超集。它們的不同之處在於,局部部分的前綴名可以包括:

  • 前導數字,例如, leg:3032571isbn13:9780136019701
  • 非領先的冒號,例如, og:video:height
  • 保留字符轉義序列,例如, wgs:lat\-long

Reserved character escape sequences

[...]包括一個 '\' 隨後的~.-!$&'()*+,;=/?#@%_一個和代表字符的 '\' 的權利。

所以應該可以使用:

dbpedia:Jesuit_Church\,_Mannheim 
+1

+1嗯,難道這是一個情況下(即我聯繫,從2011)老烏龜文件和較新的一個(從2013年起即你鏈接到)不同,在哪裏耶拿也許仍然實現舊規格? – Drux

+1

所有最近的Jena版本都支持較新的規範(並且您沒有說明您使用的是哪個版本),因爲@unor在此答案中指出必須轉義才能生效 – RobV

+0

@RobV您可以保存地假設我正在使用當前版本(2.0.11)。但後來我在逃跑中犯了一個錯誤,導致了這個問題(見更新)。對不起,對Jena造成懷疑:) – Drux