Я построил небольшую онтологию с протеже 5, которая содержит 4 класса: класс Person и его подклассы (Student, Lecturer) и класс Module и его подклассы (MathModule и CSModule), у меня есть два свойства объекта: Teaches и учится. Я все еще начинающий с OWL API, и я хочу загрузить эту онтологию и выполнить итерации по различным классам (включая подклассы), чтобы создавать и вставлять индивиды относительно свойств объекта. Я начал делать это только для одного класса, но я не уверен, как я мог сделать это для остальных классов.
public class adding_individuals {
public static void main(String[] args) throws OWLOntologyCreationException, OWLOntologyStorageException {
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
try {
OWLOntology ontology = manager.loadOntologyFromOntologyDocument(new File("C:\\..\\university.owl"));
OWLDataFactory dataFactory = manager.getOWLDataFactory();
//:lecturer 3 is an instance of the class :Lecturer and CS101 is an instance of CSModule
OWLClass Lecturer = dataFactory.getOWLClass(":Lecturer");
OWLClass CSModule = dataFactory.getOWLClass(":CSModule");
OWLNamedIndividual lecturer3 = dataFactory.getOWLNamedIndividual(":lecturer3");
OWLNamedIndividual CS101 = dataFactory.getOWLNamedIndividual(":CS101");
// create a property "teaches"
OWLObjectProperty teaches = dataFactory.getOWLObjectProperty(":teaches");
// To specify that :lecturer3 is related to :CS101 via the :teaches property, we create an object property
// assertion and add it to the ontology
OWLObjectPropertyAssertionAxiom propertyAssertion = dataFactory.getOWLObjectPropertyAssertionAxiom(teaches, lecturer3, CS101);
manager.addAxiom(ontology, propertyAssertion);
// Dump the ontology
StreamDocumentTarget target = new StreamDocumentTarget(new ByteArrayOutputStream());
manager.saveOntology(ontology);
} catch (OWLOntologyCreationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (OWLOntologyStorageException eo) {
// TODO Auto-generated catch block
eo.printStackTrace();
}
}
}