为什么使用owlapi';s RDFXMLParser无法使用两个哈希解析IRI?

为什么使用owlapi';s RDFXMLParser无法使用两个哈希解析IRI?,rdf,semantic-web,owl,ontology,iri,Rdf,Semantic Web,Owl,Ontology,Iri,我正在尝试用OWLAPI加载一个本体 资源的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

我正在尝试用OWLAPI加载一个本体

资源的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?
http://example.com/#1#2
不是合法的IRI,因此您不能将其视为一个IRI。例如,如果将其粘贴到中,则会得到:

IRI报告
http://example.com/#1#2 ==> http://example.com/#1#2

code:0/片段中的非法\u字符:
字符违反URI/IRIs的语法规则。


如果您创建了本体,那么您需要对正在使用的IRIs更加小心。如果是其他人创建的,那么您应该让他们知道他们正在生成错误数据。作为一种解决方法,您可能会以某种方式对本体进行预处理,以处理这些坏虹膜(例如,在第一个
#
之后对文本进行URL编码)。

答案是正确的。但是,报告的错误使我认为解析器认为IRI是相对的,而不是错误的。这里可能有一个bug,或者至少要抛出一个更好的错误消息。我想知道它是否试图将其视为绝对错误,失败了,然后假设它一定是相对错误?这是可能的。我已经开始调查一个问题