On 27/12/2011 13:56, Vanesa Schimpf wrote:
Hello,

I would like you to help me with a problem I have when I save an instance.
To explain the situation, I pasted an image of the classes and
properties I have in my Protégé model:
Example.png

I already have an instance of *type *named "Resolution", and what I want
is to save a new instance of *LegalDocument *with name "MyResolution"
and referencing to the "Resolution" type.
My code is the following:

         OntModel ontModel = getModelo(); // read the ontology

         OntClass dlClass =
ontModel.getOntClass("http://www.owl-ontologies.com/digesto.owl#LegalDocument";);
         Individual dlIndividual = ontModel.createIndividual(
"http://www.owl-ontologies.com/digesto.owl# MyResolution" , dlClass);
         dlIndividual.addLiteral(new PropertyImpl(
"http://www.owl-ontologies.com/digesto.owl#Name";  ), "My Resolution");
         dlIndividual.addProperty(ontModel.getProperty(
"http://www.owl-ontologies.com/digesto.owl#has_a";  ),
"http://www.owl-ontologies.com/digesto.owl# MyResolution" );
         // then write the ontology


And this is what is written in the owl:

<rdf:Description
rdf:about="http://www.owl-ontologies.com/digesto.owl#Resolution";>
<Name>Resolution</Name>
</rdf:Description>
<rdf:Description
rdf:about="http://www.owl-ontologies.com/digesto.owl#MyResolution";>
<Name>My Resolution</Name>
*<has_a>http://www.owl-ontologies.com/digesto.owl#Resolution</has_a>*
</rdf:Description>

But as you can see, the property is saved as a *literal *instead of an
object property/relation. In that way, the resultant owl would be:

<rdf:Description
rdf:about="http://www.owl-ontologies.com/digesto.owl#Resolution";>
<Name>Resolution</Name>
</rdf:Description>
<rdf:Description
rdf:about="http://www.owl-ontologies.com/digesto.owl#MyResolution";>
<Name>My Resolution</Name>
*<has_a
rdf:resource="http://www.owl-ontologies.com/digesto.owl#Resolution"/>*
</rdf:Description>


Do you know what is wrong in my code? and what should I change in order
to have as a result the last owl code?

You need a Resource to represent the Resolution. Since you say your model already contains the declaration of that resource you can do something like:

     String ONT = "http://www.owl-ontologies.com/digesto.owl#";;
     Property hasA = ontModel.getProperty(ONT + "has_a" );

     Individual Resolution = ontModel.getIndividual(ONT + "Resolution");
     dlIndividual.addProperty(hasA, Resolution);

Dave

Reply via email to