You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by 锐光刘 <ti...@gmail.com> on 2012/01/03 16:46:26 UTC

How to create a new model with OWL-Full contents from another OWL file?

Firstly,thanks for concerning my problem

I want to create a new OntModel which can store the  infomation from a
another OWL file
 so create a new OntModel with this function :
  OntModel CreatedModel =
ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM_RULE_INF);
Then, get all the the statements from another OWL file such as

   StmtIterator triples = RawModel.listStatements();
(RawModel is a OntModel and contain the information from external OWL file);

Finally, I add all the statement from triples to the CreatedModel with
function   CreatedModel.add(statement);


However,the problem is that  the new model(CreatedModel) cann't get the
information of individuals from statements,it seems that the statements
about the individuals are filterd automatic.I think this maybe that I
have't create a correct Model,because when I create a empty OntModel at
this way
      OntModel CreatedModel =
ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM_RULE_INF);
     CreatedModel.write(System.out);
It display this result:


<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" >
</rdf:RDF>


It seems not a OWL file,but a RDFS file.So there are only class and
subclass left in the new model after adding all statements to it .


Well, could anyone tell me how to create a new OWL File ,meanwhile can have
the same Namesapce and information  from the original OWL file.

Thanks very much !
Best Wishes !

 _

Re: How to create a new model with OWL-Full contents from another OWL file?

Posted by Dave Reynolds <da...@gmail.com>.
[I see you posted to the old and new jena-dev as well - this, 
jena-users, is the correct list for this sort of question.]

On 03/01/2012 15:46, 锐光刘 wrote:
> Firstly,thanks for concerning my problem
>
> I want to create a new OntModel which can store the  infomation from a
> another OWL file
>   so create a new OntModel with this function :
>    OntModel CreatedModel =
> ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM_RULE_INF);
> Then, get all the the statements from another OWL file such as
>
>     StmtIterator triples = RawModel.listStatements();
> (RawModel is a OntModel and contain the information from external OWL file);
>
> Finally, I add all the statement from triples to the CreatedModel with
> function   CreatedModel.add(statement);

While that will work it is easier to just do:

     newModel.add( otherModel )

> However,the problem is that  the new model(CreatedModel) cann't get the
> information of individuals from statements,it seems that the statements
> about the individuals are filterd automatic.

No. If you have really added all the statements from the model then then 
are all in there. There is no filtering going on in Jena.

If you can't find them as individuals then check that they exist as 
plain resources. Either they weren't in the model you copied from, or 
Jena isn't recognizing them as Individuals (e.g. there might not be 
appropriate type statements) or there is some mistake in your code.

> I think this maybe that I
> have't create a correct Model,because when I create a empty OntModel at
> this way
>        OntModel CreatedModel =
> ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM_RULE_INF);
>       CreatedModel.write(System.out);
> It display this result:
>
>
> <rdf:RDF
>      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
>      xmlns:owl="http://www.w3.org/2002/07/owl#"
>      xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
>      xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
> </rdf:RDF>
>
>
> It seems not a OWL file,but a RDFS file.

No, it is simply showing a default minimal set of namespace prefixes.

[Though in fact there's no difference between an RDFS file and and OWL 
full file.]

> So there are only class and
> subclass left in the new model after adding all statements to it .

Unlikely, see above comments.

> Well, could anyone tell me how to create a new OWL File ,meanwhile can have
> the same Namesapce and information  from the original OWL file.

To copy the namespace prefixes from one model to another then use:

    newModel.setNsPrefixes( oldModel )

Dave

Re: How to create a new model with OWL-Full contents from another OWL file?

Posted by Dave Reynolds <da...@gmail.com>.
[I see you posted to the old and new jena-dev as well - this, 
jena-users, is the correct list for this sort of question.]

On 03/01/2012 15:46, 锐光刘 wrote:
> Firstly,thanks for concerning my problem
>
> I want to create a new OntModel which can store the  infomation from a
> another OWL file
>   so create a new OntModel with this function :
>    OntModel CreatedModel =
> ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM_RULE_INF);
> Then, get all the the statements from another OWL file such as
>
>     StmtIterator triples = RawModel.listStatements();
> (RawModel is a OntModel and contain the information from external OWL file);
>
> Finally, I add all the statement from triples to the CreatedModel with
> function   CreatedModel.add(statement);

While that will work it is easier to just do:

     newModel.add( otherModel )

> However,the problem is that  the new model(CreatedModel) cann't get the
> information of individuals from statements,it seems that the statements
> about the individuals are filterd automatic.

No. If you have really added all the statements from the model then then 
are all in there. There is no filtering going on in Jena.

If you can't find them as individuals then check that they exist as 
plain resources. Either they weren't in the model you copied from, or 
Jena isn't recognizing them as Individuals (e.g. there might not be 
appropriate type statements) or there is some mistake in your code.

> I think this maybe that I
> have't create a correct Model,because when I create a empty OntModel at
> this way
>        OntModel CreatedModel =
> ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM_RULE_INF);
>       CreatedModel.write(System.out);
> It display this result:
>
>
> <rdf:RDF
>      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
>      xmlns:owl="http://www.w3.org/2002/07/owl#"
>      xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
>      xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
> </rdf:RDF>
>
>
> It seems not a OWL file,but a RDFS file.

No, it is simply showing a default minimal set of namespace prefixes.

[Though in fact there's no difference between an RDFS file and and OWL 
full file.]

> So there are only class and
> subclass left in the new model after adding all statements to it .

Unlikely, see above comments.

> Well, could anyone tell me how to create a new OWL File ,meanwhile can have
> the same Namesapce and information  from the original OWL file.

To copy the namespace prefixes from one model to another then use:

    newModel.setNsPrefixes( oldModel )

Dave