Как добавить человека в класс с помощью OWL API?

Я хочу добавить человека в класс и сослался на документ на официальном сайте OWL API.

Вот мой код.

public void addIndividualsToClass(String className, String indName) throws OWLOntologyStorageException{
    /*
     * Add an individual to input class
     */
    OWLClass tClass = fac.getOWLClass(IRI.create(NS + className));
    OWLNamedIndividual tIndividual = fac.getOWLNamedIndividual(IRI.create(NS + indName));
    OWLClassAssertionAxiom classAssertion = fac.getOWLClassAssertionAxiom(tClass, tIndividual);
    manager.addAxiom(ont, classAssertion);
    manager.saveOntology(ont, new StreamDocumentTarget(new ByteArrayOutputStream()));
}

Затем eclipse выдает это исключение.

Exception in thread "main" java.lang.IllegalArgumentException: Comparison method violates its general contract!
at java.util.ComparableTimSort.mergeLo(ComparableTimSort.java:714)
at java.util.ComparableTimSort.mergeAt(ComparableTimSort.java:451)
at java.util.ComparableTimSort.mergeCollapse(ComparableTimSort.java:376)
at java.util.ComparableTimSort.sort(ComparableTimSort.java:182)
at java.util.ComparableTimSort.sort(ComparableTimSort.java:146)
at java.util.Arrays.sort(Arrays.java:472)
at java.util.Collections.sort(Collections.java:155)
at org.coode.owlapi.owlxml.renderer.OWLXMLObjectRenderer.visit(OWLXMLObjectRenderer.java:184)
at uk.ac.manchester.cs.owl.owlapi.OWLOntologyImpl.accept(OWLOntologyImpl.java:1630)
at org.coode.owlapi.owlxml.renderer.OWLXMLRenderer.render(OWLXMLRenderer.java:106)
at org.coode.owlapi.owlxml.renderer.OWLXMLOntologyStorer.storeOntology(OWLXMLOntologyStorer.java:73)
at org.semanticweb.owlapi.util.AbstractOWLOntologyStorer.storeOntology(AbstractOWLOntologyStorer.java:174)
at uk.ac.manchester.cs.owl.owlapi.OWLOntologyManagerImpl.saveOntology(OWLOntologyManagerImpl.java:870)
at uk.ac.manchester.cs.owl.owlapi.OWLOntologyManagerImpl.saveOntology(OWLOntologyManagerImpl.java:861)
at Test.addIndividualsToClass(Test.java:146)
at Test.main(Test.java:155)

Кто-нибудь может мне помочь?


person Gohome    schedule 04.03.2013    source источник
comment
Здравствуйте, вы смогли решить эту проблему? Я получаю ту же ошибку: /   -  person Proceso    schedule 14.10.2013
comment
Что касается IllegalArgumentException, это связано с ошибкой в ​​сортировке аксиом OWLAPI для рендеринга, которая возникает при работе с Java 7, но не с Java 6. Она была исправлена ​​в последних выпусках, начиная с 3.4.8, если я правильно помню.   -  person Ignazio    schedule 19.12.2013


Ответы (2)


Это должно работать. Вам следует взглянуть на Examples.java на странице OWL-API по адресу http://owlapi.sourceforge.net/index.html

public static void createNewOnto() throws OWLOntologyCreationException,
        OWLOntologyStorageException {
    OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
    IRI ontologyIRI = IRI.create("http://example.com/owlapi/families");
    OWLOntology ont = manager.createOntology(ontologyIRI);
    OWLDataFactory factory = manager.getOWLDataFactory();

    OWLIndividual john = factory.getOWLNamedIndividual(IRI
            .create(ontologyIRI + "#John"));
    OWLIndividual mary = factory.getOWLNamedIndividual(IRI
            .create(ontologyIRI + "#Mary"));
    OWLIndividual susan = factory.getOWLNamedIndividual(IRI
            .create(ontologyIRI + "#Susan"));
    OWLIndividual bill = factory.getOWLNamedIndividual(IRI
            .create(ontologyIRI + "#Bill"));

    OWLObjectProperty hasWife = factory.getOWLObjectProperty(IRI
            .create(ontologyIRI + "#hasWife"));

    OWLObjectPropertyAssertionAxiom axiom1 = factory
            .getOWLObjectPropertyAssertionAxiom(hasWife, john, mary);

    AddAxiom addAxiom1 = new AddAxiom(ont, axiom1);
    // Now we apply the change using the manager.
    manager.applyChange(addAxiom1);

    System.out.println("RDF/XML: ");
    manager.saveOntology(ont, new StreamDocumentTarget(System.out));

}
person Ivan Viktorovic    schedule 06.03.2013

просто упоминание о том, что некоторые примеры и методы устарели

person GGEv    schedule 06.04.2019