Reputation: 2472
I've an ontology file and I can obtain all classes in its (I'm using OWL-API). Well, I should retrieve, for each classes, data properties and object properties present into my file .owl, there is any way to get them with OWL-API?
Upvotes: 5
Views: 2923
Reputation: 61
public void test(){
File file = new File("Ontology.owl");
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
OWLOntology ontology;
try {
ontology = manager.loadOntologyFromOntologyDocument(file);
Set<OWLClass> classes;
Set<OWLObjectProperty> prop;
Set<OWLDataProperty> dataProp;
Set<OWLNamedIndividual> individuals;
classes = ontology.getClassesInSignature();
prop = ontology.getObjectPropertiesInSignature();
dataProp = ontology.getDataPropertiesInSignature();
individuals = ontology.getIndividualsInSignature();
//configurator = new OWLAPIOntologyConfigurator(this);
System.out.println("Classes");
System.out.println("--------------------------------");
for (OWLClass cls : classes) {
System.out.println("+: " + cls.getIRI().getShortForm());
System.out.println(" \tObject Property Domain");
for (OWLObjectPropertyDomainAxiom op : ontology.getAxioms(AxiomType.OBJECT_PROPERTY_DOMAIN)) {
if (op.getDomain().equals(cls)) {
for(OWLObjectProperty oop : op.getObjectPropertiesInSignature()){
System.out.println("\t\t +: " + oop.getIRI().getShortForm());
}
//System.out.println("\t\t +: " + op.getProperty().getNamedProperty().getIRI().getShortForm());
}
}
System.out.println(" \tData Property Domain");
for (OWLDataPropertyDomainAxiom dp : ontology.getAxioms(AxiomType.DATA_PROPERTY_DOMAIN)) {
if (dp.getDomain().equals(cls)) {
for(OWLDataProperty odp : dp.getDataPropertiesInSignature()){
System.out.println("\t\t +: " + odp.getIRI().getShortForm());
}
//System.out.println("\t\t +:" + dp.getProperty());
}
}
}
} catch (OWLOntologyCreationException ex) {
Logger.getLogger(OntologyAPI.class.getName()).log(Level.SEVERE, null, ex);
}
}
Upvotes: 6
Reputation: 3067
This should be an answer, I think, rather than a comment.
To get the properties of a class, you just use getSuperClasses. So, if you have a class like so
A
:subClassOf (r some B)
then (getSuperClasses A)
will return a set with a single OWLClassExpression
which will be an instance of OWLObjectSomeValuesFrom
. In turn, you can get the property with getProperty
.
Upvotes: 0