Почему RDFXMLParser API OWL не может разрешить IRI с двумя хэшами?
Я пытаюсь загрузить онтологию с 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'
, то все в порядке.
Почему RDFXMLParser API OWL не может разрешить IRI с двумя хэшами?
1 ответ
http://example.com/#1#2
не является законным IRI, поэтому вы не должны относиться к нему как к одному. Например, если вы вставите его в SPARQLer IRI Validator, вы получите вывод:
IRI Report
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 (например, URL-кодировать текст после первого #
).