You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by Vanesa Schimpf <va...@gmail.com> on 2011/12/27 14:56:30 UTC

Problem when saving a property

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:
[image: 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?

Thank you very much in advance,
Vanesa.

Re: Problem when saving a property

Posted by Dave Reynolds <da...@gmail.com>.
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