Поддерживает ли JENA API OWL 2? - PullRequest
0 голосов
/ 05 января 2019

Могу ли я узнать, поддерживает ли Apahe JENA синтаксис OWL 2 в Java? Он упомянул, что в документации (https://jena.apache.org/documentation/ontology/) он содержит только ограниченные ограничения по количеству элементов. Я хотел бы подтвердить это от экспертов.

1 Ответ

0 голосов
/ 05 января 2019

Apache Jena не поддерживает , не поддерживает OWL2, только интерфейс от OWL11 до org.apache.jena.ontology.OntModel . Смотрите также документация .

Но вы все равно можете работать с OWL2 в Jena, используя некоторые внешние API и инструменты на основе jena, например, ONT-API , то есть OWL-API -api ( v5 ) над Йеной.

В ONT-API есть два основных представления данных OWL2, которые инкапсулированы в форме RDF-графика: ru.avicomp.ontapi.jena.model.OntGraphModel и ru.avicomp.ontapi.OntologyModel. Представление OntGraphModel является полным аналогом Jena OntModel, средства для работы с тройками. И представление OntologyModel является расширенным org.semanticweb.owlapi.model.OWLOntology, средством для работы с аксиоматическими данными, которое поддерживается представлением OntGraphModel и наоборот.

Например, следующий фрагмент:

    String uri = "https://stackoverflow.com/questions/54049750";
    String ns = uri + "#";
    OntGraphModel m = OntModelFactory.createModel()
            .setNsPrefixes(OntModelFactory.STANDARD).setNsPrefix("q", ns);
    m.setID(uri);
    OntClass c = m.createOntClass(ns + "c");
    OntNOP p = m.createObjectProperty(ns + "p");
    OntIndividual i = c.createIndividual(ns + "i");
    m.createComplementOf(m.createUnionOf(c, m.getOWLThing(),
            m.createObjectSomeValuesFrom(p, m.createOneOf(i))));
    m.write(System.out, "ttl");

создаст следующую онтологию:

@prefix q:     <https://stackoverflow.com/questions/54049750#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .

<https://stackoverflow.com/questions/54049750>
        a       owl:Ontology .

q:c     a       owl:Class .

q:p     a       owl:ObjectProperty .

q:i     a       owl:NamedIndividual , q:c .

[ a                 owl:Class ;
  owl:complementOf  [ a            owl:Class ;
                      owl:unionOf  ( q:c owl:Thing
                                     [ a                   owl:Restriction ;
                                       owl:onProperty      q:p ;
                                       owl:someValuesFrom  [ a          owl:Class ;
                                                             owl:oneOf  ( q:i )
                                                           ]
                                     ]
                                   )
                    ]
] .
...