我正在尝试使用OWL API加载本体。
其中一项资源'IRI为http://example.com/#1#2'
。
发生以下异常:
Parser: RDFXMLParser
org.semanticweb.owlapi.rdf.syntax.RDFParserException: [line=129:column=52] IRI 'http://example.com/#1#2' cannot be resolved against curent base IRI http://example.com/ontology/demo.owl
如果我将IRI更改为http://example.com/#1'
,那么一切都很好。
为什么OWL API的RDFXMLParser无法通过两个哈希解析IRI?
答案 0 :(得分:3)
http://example.com/#1#2
不是合法的IRI,因此您不能将其视为一体。例如,如果您将其粘贴到SPARQLer IRI Validator,则会获得output:
IRI报告
http://example.com/#1#2 ==> http://example.com/#1#2
<http://example.com/#1#2> Code: 0/ILLEGAL_CHARACTER in FRAGMENT: The character violates the grammar rules for URIs/IRIs.
如果您创建了本体,那么您需要更加小心您正在使用的IRI。如果其他人创建了它,那么您应该让他们知道他们正在生成错误的数据。作为一种解决方法,您可以通过某种方式对本体进行预处理,以便对这些错误的IRI执行某些操作(例如,在第一个#
之后对文本进行URLencode编码)。