2013-05-14 38 views
2

我在芝麻2.7中遇到了一些麻煩。假設我有以下RDF文檔:芝麻2.7未能識別RDF文字

<rdf:RDF xmlns:arq="http://example.com/vocab.rdf#" 
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> 

<arq:Photo rdf:about="http://example.com/photo_2230.rdf"> 
    <arq:photoName rdf:datatype="http://www.w3.org/2000/01/rdf-schema#Literal">Testing</arq:photoName> 
    <!-- More properties --> 
    ... 
</arq:Photo> 

當我提交給芝麻,出現以下錯誤:

「測試」無法識別,而無法覈實,與數據類型http://www.w3.org/2000/01/rdf-schema#Literal

它與以前的芝麻版本(版本2.6.9)正常工作。但是現在,在更新之後,Sesame 2.7無法識別它,我不明白爲什麼。有人可以猜測發生了什麼嗎?

謝謝!

回答

2

在舊版本的Sesame中,解析器僅在遇到無法識別的數據類型時才發出警告。在Sesame 2.7中,默認情況下,解析器實際上會停止並出現錯誤(儘管我們正在考慮在下次更新時再次放鬆一下)。因此,即使在舊版本的Sesame中,也無法識別,並且當您嘗試加載此數據時,您會在日誌中看到警告。

這是一個無法識別的數據類型的原因是「http://www.w3.org/2000/01/rdf-schema#Literal」根本不是數據類型標識符。相反,它是文字類的標識符(所以是完全不同的東西)。您應該從RDF中刪除此數據類型,因爲它是數據類型機制的不正確用法。

拼寫出來,改變這一行:

<arq:photoName rdf:datatype="http://www.w3.org/2000/01/rdf-schema#Literal">Testing</arq:photoName> 

到:

<arq:photoName>Testing</arq:photoName> 

除了修復你的數據,你當然也可以配置芝麻的解析器不會立即失敗無效數據類型。在編程上,這可以通過修改連接解析器中使用的ParserConfig來輕鬆完成。

RepositoryConnection conn; // your repository connection 

// set the parser used in the connection to report datatype 
// verification errors but not fail on them. 
conn.getParserConfig().addNonFatalError(BasicParserSettings.VERIFY_DATATYPE_VALUES); 
+0

你是對的!我可能誤解了文字的意思。我做了你所說的並且解決了我的問題。有趣的是,再次查看我係統的日誌文件,舊芝麻沒有給出警告。謝謝! =) – Rick 2013-05-14 17:33:02