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ć

Reply via email to