简体   繁体   中英

OWL: get Class from an existent Antology

How can I get an existing Class from an Ontology with the OWL-API? This is a fragment of my ontology:

<owl:Class rdf:ID="StringDocu">
  <owl:equivalentClass>
    <owl:Restriction>
      <owl:someValuesFrom rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
      <owl:onProperty rdf:resource="#hasContent"/>
    </owl:Restriction>
  </owl:equivalentClass>
  <rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >String Docu</rdfs:label>
  <rdfs:subClassOf rdf:resource="#Docu"/>
  <owl:disjointWith rdf:resource="#URIDocu"/>
  <rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >This class concerns a docu with the content specified as common text.</rdfs:comment>
</owl:Class>

I start with this code:

String ontologyUri = "http://mysite.com/my_ontology.owl";
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
OWLOntology ontology = manager.createOntology(IRI.create(ontologyUri));
OWLDataFactory factory = manager.getOWLDataFactory();

and now I want to retrieve the StringDocu class. How can I get this?

continuing from the code you showed in your question, you can get a direct reference to the class as follows (I assume that your class URI is "http://mysite.com/my_ontology.owl#StringDocu"):

OWLClass stringDocuClass = factory.getOWLClass(IRI.create("http://mysite.com/my_ontology.owl#StringDocu"))

That gives you a direct reference to the class you are after and you can take it from there.

Hope this helps!

I think this will give you all classes referenced in the ontology you loaded:

String ontologyUri = "http://mysite.com/my_ontology.owl";
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
OWLOntology ontology = manager.createOntology(IRI.create(ontologyUri));
Set <OWLClass> classes = ontology.getClassesInSignature();

Then you can process/filter/find whatever you need on that set of OWLClass .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM