我一直在浏览Jena中的代码,以弄清楚在传递--strict命令行时会发生什么。似乎除了记录警告之外没有区别。在CmdLangParse.java中,设置了严格模式并调用了SysRIOT.setStrictMode(true),并且在底层设置了StrictXSDLexicialForms和strictMode标志。
@Override
protected void exec() {
boolean oldStrictValue = SysRIOT.isStrictMode() ;
if ( modLangParse.strictMode() )
SysRIOT.setStrictMode(true) ;
try { exec$() ; }
finally { SysRIOT.setStrictMode(oldStrictValue) ; }
}
然后仅在CheckerLiters的validateByDatatype和validateByDatatypeNumericuse中使用StrictXSDLexicalForms属性,如果找到空格,\ n或\ r \ n它只是记录它。以下是来自validateByDatatypeNumeric
的代码段 // Do a white space check as well for numerics.
if ( lexicalForm.contains(" ") ) {
handler.warning("Whitespace in numeric XSD literal: '" + lexicalForm + "'", line, col) ;
return false ;
}
if ( lexicalForm.contains("\n") ) {
handler.warning("Newline in numeric XSD literal: '" + lexicalForm + "'", line, col) ;
return false ;
}
if ( lexicalForm.contains("\r") ) {
handler.warning("Carriage return in numeric XSD literal: '" + lexicalForm + "'", line, col) ;
return false ;
}
我错过了什么或两种模式之间没有区别(严格和非严格)?
答案 0 :(得分:0)
--strict
是Jena命令行工具的一般标志。
对于解析,你注意到的几乎没有什么区别。它会关闭功能并提供标准的最低要求。对于解析,没有多少。