Dear friends, I am developing ontology for supply chain management and I am encountering some problems regarding Jena API. In my ontology I have following structure:
classA classA1 classA2 classA3 classA4 classB classC classD Classes are representing some documents for example (classA = planning doc, classB = execution doc, etc.). Now I would like to connect (relationship) these classes with same ObjectProperty. In Jena Ontology API it sais: In an ontology, a property denotes the name of a relationship between resources, or between a resource and a data value. I followed jena api and did the relationship like this (OntologyPrintscreen.jpg in attachment): //let's start some JENA code -- simple default RDF model String baseURI = InitInfo.getInstance().getDefaultBaseURI(); //create ontology model OntModel processModel = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_TRANS_INF); //createResource Resource r = processModel.createResource(baseURI + "r"); OntClass classA = processModel.createClass(baseURI + "classA"); OntClass classB = processModel.createClass(baseURI + "classB"); OntClass classC = processModel.createClass(baseURI + "classC"); OntClass classD = processModel.createClass(baseURI + "classD"); classA.addSubClass(processModel.createClass(baseURI + "classA1")); classA.addSubClass(processModel.createClass(baseURI + "classA2")); classA.addSubClass(processModel.createClass(baseURI + "classA3")); classA.addSubClass(processModel.createClass(baseURI + "classA4")); OntClass classA1 = processModel.getOntClass(baseURI + "classA1"); OntClass classA2 = processModel.getOntClass(baseURI + "classA2"); OntClass classA3 = processModel.getOntClass(baseURI + "classA3"); OntClass classA4 = processModel.getOntClass(baseURI + "classA4"); ObjectProperty uses = processModel.createObjectProperty(baseURI + "uses"); ObjectProperty creates = processModel.createObjectProperty(baseURI + "creates"); creates.addDomain(classA1); creates.addRange(classA2); uses.addDomain(classA1); uses.addRange(classB); My problem: I would like to use same objectProperty (uses and creates) to model relationship between my classes. For example: classA1 uses classB classA1 creates classA2 classA2 creates classA3 classA3 uses classD classA4 creates classC There is a desired look (what I would like to achieve) with jena api (OntologyDesired.jpg). I've already tried: creates.addDomain(classA2); creates.addRange(classA3); uses.addDomain(classA3); uses.addRange(classD); But statements get disregarded. Can you please help me model relationships between these classes with same ObjectProperty, is this even possible? With protege API you can do this: OWLObjectProperty childrenProperty = owlModel.createOWLObjectProperty("children"); childrenProperty.addUnionRangeClass(personClass); childrenProperty.addUnionRangeClass(animalClass); Is something like that possible with Jena, I haven't found anything on the web, so you are my final chance :) Looking forward for your answer. Thank you and my best regards, Bojan Milic -- Lep pozdrav, Bojan Milić