Почему 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-кодировать текст после первого #).

Другие вопросы по тегам