OWL API, добавив URI и имя между ‹! --› без добавления URI в другие разделы

У меня возникла проблема с API OWL при попытке отобразить URI + Name между ‹ !-- -- > без добавления URI+Name в другие разделы.

Например, я использую онтологию пиццы в качестве источника, и файл онтологии показывает приведенный ниже набор кода для отдельных лиц.

<!-- Individual: http://www.co-ode.org/ontologies/pizza/pizza.owl#America -->

<owl:Thing rdf:about="#America">
    <rdf:type rdf:resource="#Country"/>
</owl:Thing>

Используя приведенный ниже код, я получаю почти то же самое, но URI по-прежнему отсутствует между ‹-- #America-->, я могу просто добавить iri+name в метод getOWLClass, но это в конечном итоге даст мне URI +Имя между ‹ !-- -- > а также на имени Индивидуального, т.е. rdf:about = http://www.co-ode.org/ontologies/pizza/pizza.owl#America вместо просто #America.

 OWLClass tClass = dataFactory.getOWLClass(IRI.create("#Country"));
 OWLNamedIndividual tIndividual = dataFactory.getOWLNamedIndividual(IRI.create("#America"));
 OWLClassAssertionAxiom classAssertion = dataFactory.getOWLClassAssertionAxiom(tClass, tIndividual);
 manager.addAxiom(ontology, classAssertion);

Выход:

<!-- #America -->

<owl:NamedIndividual rdf:about="#America">
    <rdf:type rdf:resource="#Country"/>
</owl:NamedIndividual>

Каким он должен быть:

<!-- http://www.co-ode.org/ontologies/pizza/pizza.owl#America -->

<owl:NamedIndividual rdf:about="#America">
    <rdf:type rdf:resource="#Country"/>
</owl:NamedIndividual>

Что мне не хватает и как мне сделать так, чтобы это выглядело правильно, как в онтологии пиццы? Я использую OWL API 4.0.

РЕДАКТИРОВАТЬ:

Основываясь на предложении Игнацио, я безуспешно внес изменения, вот код. Я снова использую OWL API 4, URI все еще не добавляется в комментарий ‹! -- #Америка -- >.

 OWLClass tClass = dataFactory.getOWLClass(IRI.create("#Country"));
 OWLNamedIndividual tIndividual = dataFactory.getOWLNamedIndividual(IRI.create("#America"));
 OWLClassAssertionAxiom classAssertion = dataFactory.getOWLClassAssertionAxiom(tClass, tIndividual);
 XMLWriterPreferences.getInstance().setUseNamespaceEntities(true);
 OWLDocumentFormat format = m.getOntologyFormat(ontology);

 format.asPrefixOWLOntologyFormat()
    .setPrefix("ns:",
               "http://www.co-ode.org/ontologies/pizza/pizza.owl#");

 try
 {
     m.addAxiom(ontology, classAssertion);
     m.saveOntology(ontology, format, new SystemOutDocumentTarget());
 } catch (OWLOntologyStorageException e)
 {
     e.printStackTrace();
     System.exit(0);
 }

Я все еще довольно новичок в этом, извините, если я избыточен.

Вывод по-прежнему без URI + #Америка в ‹ ! -- #Америка -- >:

 <!-- #America-->

 <owl:NamedIndividual rdf:about="#America">
     <rdf:type rdf:resource="#Country"/>
 </owl:NamedIndividual>

person Joey Pravato    schedule 07.04.2015    source источник


Ответы (1)


Вы пытаетесь вывести относительные IRI в RDF/XML. OWL API не поддерживает это (за исключением фактического создания сущностей с относительными IRI, как вы делаете в своем коде. Однако полученная онтология нарушает профили OWL 2).

Вы можете получить аналогичный результат с сущностями:

XMLWriterPreferences.getInstance().setUseNamespaceEntities(true);
ontology.getFormat()
            .asPrefixOWLOntologyFormat()
            .setPrefix("ns:",
                    "http://www.co-ode.org/ontologies/pizza/pizza.owl#");

И сохранить онтологию в этот момент.

person Ignazio    schedule 08.04.2015
comment
Привет, я использую OWL API 4, поэтому owlOntology.getFormat() не найден. Мне пришлось использовать OWLOntologyManager.getOntologyFormat(ontology).asPrefixOWLOntologyFormat().setPr‌​‌​‌​efix(ns:,co-ode.org/ontologies/pizza/pizza.owl#); Я использовал этот метод, когда выполнял приведенный выше код, но ‹!-- --› остался без изменений. Добавил больше кода выше.... спасибо - person Joey Pravato; 09.04.2015
comment
IRI.create(#Country) является относительным IRI, и установка пространств имен ничего с ним не сделает. Комментарий заголовка между ‹!-- --› использует полный IRI и ни в коем случае не сокращает его. - person Ignazio; 09.04.2015
comment
Я не получаю полный IRI в комментарии заголовка, я получаю только относительный IRI. - person Joey Pravato; 09.04.2015
comment
Да, в моем предыдущем комментарии я хотел сказать, что IRI.create(#Country) создаст IRI, чья полная строковая форма — #Country — этот IRI является относительным, и онтологии не должны содержать объекты, использующие эти IRI. Для ваших целей вы должны использовать IRI.create("http://www.co-ode.org/ontologies/pizza/pizza.owl#Country") - person Ignazio; 09.04.2015