You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by aarthi <aa...@gmail.com> on 2013/04/03 18:23:00 UTC

Re:

hi...  i need to compare two ontologies using jena... if i take two
classes, each in a separate ontology. in order to say these two classes are
structurally equivalent, i need to say all the super class for the 2
 classes we considered are similar.. can anyone help me for the code


On Sat, Mar 30, 2013 at 8:24 AM, aarthi <aa...@gmail.com> wrote:

> hi thanks.. it worked correctly. because i didn't add the jena files
> correctly.sorry for that. and  i need to retrieve the class and
> properties names from an ontology. if i execute my previous code i
> just got the triple format. is there anyway to store the class and
> properties names in a separate file or in a database? if its possible
> please guide me.....
>
>
>
>
>
>
>
>
> On 3/30/13, Andy Seaborne <an...@apache.org> wrote:
> > Which version of Jena is this?
> >
> > Jena doesn't use Apache commons logging (it did a long time ago, I
> > think).  For some libraries we use, there is a Apache commons logging
> > dependency, which is met via jcl-over-slf4j in the POMs.
> >
> > But that's nowhere near PropertyImpl, which has a reference to SLF4J
> > nowadays.
> >
> >       Andy
> >
> >  >>> Exception in thread "main" java.lang.NoClassDefFoundError:
> >  >>> org/apache/commons/logging/LogFactory
> >  >>>          at
> >  >>>
> com.hp.hpl.jena.rdf.model.impl.PropertyImpl.<clinit>(PropertyImpl.java
> >  >> :
> >  >>> 58)
> >
> >
> > On 30/03/13 13:38, John A. Fereira wrote:
> >> Specifically, you'll need to include the commons-logging jar file in
> your
> >> classpath.  Typically that would mean specifying a directory which
> >> includes that jar file as well as the jar files for the jena library and
> >> any other dependency library.  You'll probably also need to include one
> >> for log4j or simple logging (slf4j) library.
> >>
> >>> -----Original Message-----
> >>> From: Milorad Tosic [mailto:mbtosic@yahoo.com]
> >>> Sent: Saturday, March 30, 2013 9:07 AM
> >>> To: aarthi; users
> >>> Subject: Re:
> >>>
> >>> Looks like you need to include an additional library for
> >>> org.apache.commons.logging.LogFactory class.
> >>>
> >>> Regards,
> >>> Milorad
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>> ________________________________
> >>>> From: aarthi <aa...@gmail.com>
> >>>> To: Milorad Tosic <mb...@yahoo.com>; users <us...@jena.apache.org>
> >>>> Sent: Saturday, March 30, 2013 1:56 PM
> >>>> Subject:
> >>>>
> >>>> hi..
> >>>>    i'm doing my project with ontology. i need to retrieve the class
> and
> >>>> properties names in order to compare them for equality. to retrieve
> >>> the
> >>>> class an property names i'm using a java code. i have attached that
> >>>> code with this mail. but i got some error, I don't know how to resolve
> >>>> that. for that i had import com.hp.hpl.jena package. i dont get the
> >>>> classpath files and javadoc files. is it enough if i add only the
> >>>> source package? pls help me....
> >>>>
> >>>> this is my code:
> >>>>
> >>>>
> >>>> //package testejena;
> >>>> import com.hp.hpl.jena.ontology.OntClass;
> >>>> import com.hp.hpl.jena.ontology.OntModel;
> >>>> import com.hp.hpl.jena.ontology.OntModelSpec;
> >>>> import com.hp.hpl.jena.rdf.model.ModelFactory;
> >>>> import com.hp.hpl.jena.util.FileManager; import
> >>>> com.hp.hpl.jena.util.iterator.ExtendedIterator;
> >>>> import java.io.InputStream;
> >>>> import java.util.Iterator;
> >>>>PropertyImpl
> >>>> public class testeProp {
> >>>>      static final String inputFileName = "newspaper.owl";
> >>>>      public static void main(String args[]) {
> >>>>          try {
> >>>>              //create the reasoning model using the base
> >>>>              OntModel inf =
> >>>> ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);
> >>>>
> >>>>              // use the FileManager to find the input file
> >>>>              InputStream in = FileManager.get().open(inputFileName);
> >>>>              if (in == null) {
> >>>>                  throw new IllegalArgumentException("File: " +
> >>>> inputFileName + " not found");
> >>>>              }
> >>>>
> >>>>              inf.read(in, "");
> >>>>
> >>>>              String URI =
> >>>> "http://www.owl-ontologies.com/Ontology1363337688.owl#";
> >>>>
> >>>>              ExtendedIterator classes = inf.listClasses();
> >>>>              while (classes.hasNext()) {
> >>>>                  OntClass essaClasse = (OntClass) classes.next();
> >>>>
> >>>>                  String vClasse =
> essaClasse.getLocalName().toString();
> >>>>
> >>>>                  if (essaClasse.hasSubClass()) {
> >>>>                      System.out.println("Classe: " + vClasse);
> >>>>                      OntClass cla = inf.getOntClass(URI + vClasse);
> >>>>                      for (Iterator i = cla.listSubClasses();
> >>>> i.hasNext();) {
> >>>>                          OntClass c = (OntClass) i.next();
> >>>>                          System.out.print("   " + c.getLocalName() + "
> >>> "
> >>>> + "\n");
> >>>>                      }
> >>>>                  }
> >>>>              }
> >>>>          } catch (Exception e) {
> >>>>              System.out.println("there may be error");
> >>>>              System.out.println(e.getMessage());
> >>>>          }
> >>>>      }
> >>>> }
> >>>>
> >>>>
> >>>> ----------------------------------------------------------------------
> >>> -
> >>>> --------------------------- if i run my program i got the following
> >>>> error:
> >>>>
> >>>>
> >>>> Exception in thread "main" java.lang.NoClassDefFoundError:
> >>>> org/apache/commons/logging/LogFactory
> >>>>          at
> >>>> com.hp.hpl.jena.rdf.model.impl.PropertyImpl.<clinit>(PropertyImpl.java
> >>> :
> >>>> 58)
> >>>>          at
> >>>> com.hp.hpl.jena.enhanced.BuiltinPersonalities.<clinit>(BuiltinPersonal
> >>> i
> >>>> ties.java:28)
> >>>>          at
> >>>> com.hp.hpl.jena.rdf.model.impl.ModelCom.<init>(ModelCom.java:51)
> >>>>          at
> >>>> com.hp.hpl.jena.rdf.model.ModelFactory.createDefaultModel(ModelFactory
> >>> .
> >>>> java:119)
> >>>>          at
> >>>> com.hp.hpl.jena.rdf.model.ModelFactory.createDefaultModel(ModelFactory
> >>> .
> >>>> java:113)
> >>>>          at
> >>>> com.hp.hpl.jena.rdf.model.impl.ModelSpecImpl.<clinit>(ModelSpecImpl.ja
> >>> v
> >>>> a:56)
> >>>>          at testeProp.main(testeProp.java:16) Caused by:
> >>>> java.lang.ClassNotFoundException:
> >>>> org.apache.commons.logging.LogFactory
> >>>>          at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
> >>>>          at java.security.AccessController.doPrivileged(Native Method)
> >>>>          at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
> >>>>          at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
> >>>>          at
> >>>> sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
> >>>>          at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
> >>>>          ... 7 more
> >>>> Java Result: 1
> >>>> BUILD SUCCESSFUL (total time: 0 seconds)
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>> please anyone help me...
> >>>>
> >>>>
> >>>>
> >>
> >
> >
>

Re:

Posted by Milorad Tosic <mb...@yahoo.com>.
We have the open source project http://code.google.com/p/opensemcq/ that may have a code relevant for the problem (we find similar classes based on pre-specified topological and text similarity based criteria).

Milorad





>________________________________
> From: aarthi <aa...@gmail.com>
>To: users <us...@jena.apache.org>; Milorad Tosic <mb...@yahoo.com> 
>Sent: Wednesday, April 3, 2013 6:23 PM
>Subject: Re:
> 
>hi...  i need to compare two ontologies using jena... if i take two
>classes, each in a separate ontology. in order to say these two classes are
>structurally equivalent, i need to say all the super class for the 2
>classes we considered are similar.. can anyone help me for the code
>
>
>On Sat, Mar 30, 2013 at 8:24 AM, aarthi <aa...@gmail.com> wrote:
>
>> hi thanks.. it worked correctly. because i didn't add the jena files
>> correctly.sorry for that. and  i need to retrieve the class and
>> properties names from an ontology. if i execute my previous code i
>> just got the triple format. is there anyway to store the class and
>> properties names in a separate file or in a database? if its possible
>> please guide me.....
>>
>>
>>
>>
>>
>>
>>
>>
>> On 3/30/13, Andy Seaborne <an...@apache.org> wrote:
>> > Which version of Jena is this?
>> >
>> > Jena doesn't use Apache commons logging (it did a long time ago, I
>> > think).  For some libraries we use, there is a Apache commons logging
>> > dependency, which is met via jcl-over-slf4j in the POMs.
>> >
>> > But that's nowhere near PropertyImpl, which has a reference to SLF4J
>> > nowadays.
>> >
>> >       Andy
>> >
>> >  >>> Exception in thread "main" java.lang.NoClassDefFoundError:
>> >  >>> org/apache/commons/logging/LogFactory
>> >  >>>          at
>> >  >>>
>> com.hp.hpl.jena.rdf.model.impl.PropertyImpl.<clinit>(PropertyImpl.java
>> >  >> :
>> >  >>> 58)
>> >
>> >
>> > On 30/03/13 13:38, John A. Fereira wrote:
>> >> Specifically, you'll need to include the commons-logging jar file in
>> your
>> >> classpath.  Typically that would mean specifying a directory which
>> >> includes that jar file as well as the jar files for the jena library and
>> >> any other dependency library.  You'll probably also need to include one
>> >> for log4j or simple logging (slf4j) library.
>> >>
>> >>> -----Original Message-----
>> >>> From: Milorad Tosic [mailto:mbtosic@yahoo.com]
>> >>> Sent: Saturday, March 30, 2013 9:07 AM
>> >>> To: aarthi; users
>> >>> Subject: Re:
>> >>>
>> >>> Looks like you need to include an additional library for
>> >>> org.apache.commons.logging.LogFactory class.
>> >>>
>> >>> Regards,
>> >>> Milorad
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>> ________________________________
>> >>>> From: aarthi <aa...@gmail.com>
>> >>>> To: Milorad Tosic <mb...@yahoo.com>; users <us...@jena.apache.org>
>> >>>> Sent: Saturday, March 30, 2013 1:56 PM
>> >>>> Subject:
>> >>>>
>> >>>> hi..
>> >>>>    i'm doing my project with ontology. i need to retrieve the class
>> and
>> >>>> properties names in order to compare them for equality. to retrieve
>> >>> the
>> >>>> class an property names i'm using a java code. i have attached that
>> >>>> code with this mail. but i got some error, I don't know how to resolve
>> >>>> that. for that i had import com.hp.hpl.jena package. i dont get the
>> >>>> classpath files and javadoc files. is it enough if i add only the
>> >>>> source package? pls help me....
>> >>>>
>> >>>> this is my code:
>> >>>>
>> >>>>
>> >>>> //package testejena;
>> >>>> import com.hp.hpl.jena.ontology.OntClass;
>> >>>> import com.hp.hpl.jena.ontology.OntModel;
>> >>>> import com.hp.hpl.jena.ontology.OntModelSpec;
>> >>>> import com.hp.hpl.jena.rdf.model.ModelFactory;
>> >>>> import com.hp.hpl.jena.util.FileManager; import
>> >>>> com.hp.hpl.jena.util.iterator.ExtendedIterator;
>> >>>> import java.io.InputStream;
>> >>>> import java.util.Iterator;
>> >>>>PropertyImpl
>> >>>> public class testeProp {
>> >>>>      static final String inputFileName = "newspaper.owl";
>> >>>>      public static void main(String args[]) {
>> >>>>          try {
>> >>>>              //create the reasoning model using the base
>> >>>>              OntModel inf =
>> >>>> ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);
>> >>>>
>> >>>>              // use the FileManager to find the input file
>> >>>>              InputStream in = FileManager.get().open(inputFileName);
>> >>>>              if (in == null) {
>> >>>>                  throw new IllegalArgumentException("File: " +
>> >>>> inputFileName + " not found");
>> >>>>              }
>> >>>>
>> >>>>              inf.read(in, "");
>> >>>>
>> >>>>              String URI =
>> >>>> "http://www.owl-ontologies.com/Ontology1363337688.owl#";
>> >>>>
>> >>>>              ExtendedIterator classes = inf.listClasses();
>> >>>>              while (classes.hasNext()) {
>> >>>>                  OntClass essaClasse = (OntClass) classes.next();
>> >>>>
>> >>>>                  String vClasse =
>> essaClasse.getLocalName().toString();
>> >>>>
>> >>>>                  if (essaClasse.hasSubClass()) {
>> >>>>                      System.out.println("Classe: " + vClasse);
>> >>>>                      OntClass cla = inf.getOntClass(URI + vClasse);
>> >>>>                      for (Iterator i = cla.listSubClasses();
>> >>>> i.hasNext();) {
>> >>>>                          OntClass c = (OntClass) i.next();
>> >>>>                          System.out.print("   " + c.getLocalName() + "
>> >>> "
>> >>>> + "\n");
>> >>>>                      }
>> >>>>                  }
>> >>>>              }
>> >>>>          } catch (Exception e) {
>> >>>>              System.out.println("there may be error");
>> >>>>              System.out.println(e.getMessage());
>> >>>>          }
>> >>>>      }
>> >>>> }
>> >>>>
>> >>>>
>> >>>> ----------------------------------------------------------------------
>> >>> -
>> >>>> --------------------------- if i run my program i got the following
>> >>>> error:
>> >>>>
>> >>>>
>> >>>> Exception in thread "main" java.lang.NoClassDefFoundError:
>> >>>> org/apache/commons/logging/LogFactory
>> >>>>          at
>> >>>> com.hp.hpl.jena.rdf.model.impl.PropertyImpl.<clinit>(PropertyImpl.java
>> >>> :
>> >>>> 58)
>> >>>>          at
>> >>>> com.hp.hpl.jena.enhanced.BuiltinPersonalities.<clinit>(BuiltinPersonal
>> >>> i
>> >>>> ties.java:28)
>> >>>>          at
>> >>>> com.hp.hpl.jena.rdf.model.impl.ModelCom.<init>(ModelCom.java:51)
>> >>>>          at
>> >>>> com.hp.hpl.jena.rdf.model.ModelFactory.createDefaultModel(ModelFactory
>> >>> .
>> >>>> java:119)
>> >>>>          at
>> >>>> com.hp.hpl.jena.rdf.model.ModelFactory.createDefaultModel(ModelFactory
>> >>> .
>> >>>> java:113)
>> >>>>          at
>> >>>> com.hp.hpl.jena.rdf.model.impl.ModelSpecImpl.<clinit>(ModelSpecImpl.ja
>> >>> v
>> >>>> a:56)
>> >>>>          at testeProp.main(testeProp.java:16) Caused by:
>> >>>> java.lang.ClassNotFoundException:
>> >>>> org.apache.commons.logging.LogFactory
>> >>>>          at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
>> >>>>          at java.security.AccessController.doPrivileged(Native Method)
>> >>>>          at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
>> >>>>          at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
>> >>>>          at
>> >>>> sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
>> >>>>          at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
>> >>>>          ... 7 more
>> >>>> Java Result: 1
>> >>>> BUILD SUCCESSFUL (total time: 0 seconds)
>> >>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>> please anyone help me...
>> >>>>
>> >>>>
>> >>>>
>> >>
>> >
>> >
>>
>
>
>

Re:

Posted by Mark Fischer <mr...@gmail.com>.
Hey Aarthi,

isMapped is sort of specific to my application. It lets me say something
like,
"http://xmlns.com/foaf/spec/20100809/#" is equivalent to "
http://xmlns.com/foaf/spec/#"

So that if I'm comparing different versions, classes with the same
localName but different
versions for their namespace are still considered equal.

You can ignore this or implement it however you like. I simply used a Map.

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

        private Map<String, String> nsRemap;

        private boolean isMapped(String thisURI, String thatURI){
		if(thisURI.equals(thatURI)) return true;
		if(nsRemap == null) return false;
		String mapString = nsRemap.get(thisURI);
		if(mapString != null && mapString.equals(thatURI)) return true;
		return false;
	}

 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Of course, you'll need to initialize the map somewhere if you want to take
my approach.

--
Mark Fischer


On Thu, Apr 4, 2013 at 1:14 PM, aarthi <aa...@gmail.com> wrote:
>
> hi can you send me the code for ismapped() function...
>
>
> On Wed, Apr 3, 2013 at 11:16 AM, Mark Fischer <mrk.c.fischer@gmail.com
>wrote:
>
> > I did something similar a while back.
> > This doesn't quite do what you want, but it may be close.
> > I compared inequivalent classes and such as well as super classes.
> >
> >
> >
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> >
> >     private boolean areEqual(OntClass thisOne, OntClass thatOne){
> >         return areEqual(false, thisOne, thatOne);
> >     }
> >
> >     private boolean areEqual(boolean deep, OntClass thisOne, OntClass
> > thatOne){
> >         if (thisOne.isUnionClass() && thatOne.isUnionClass()) {
> >             return areEqual(thisOne.asUnionClass(),
> > thatOne.asUnionClass());
> >         } else if (thisOne.isIntersectionClass() &&
> > thatOne.isIntersectionClass()) {
> >             return areEqual(thisOne.asIntersectionClass(),
> > thatOne.asIntersectionClass());
> >         } else if (thisOne.isComplementClass() &&
> > thatOne.isComplementClass()) {
> >             return areEqual(thisOne.asComplementClass(),
> > thatOne.asComplementClass());
> >         } else if (thisOne.isRestriction() && thatOne.isRestriction()) {
> >             return areEqual(thisOne.asRestriction(),
> > thatOne.asRestriction());
> >         } else if (thisOne.isURIResource() && thatOne.isURIResource()) {
> >             // Both classes must have the same URI to be the same
> >             if(!haveEqualURI(thisOne, thatOne))
> >                 return false;
> >
> >             if(deep){
> >                 // Must have the same Equivalent Classes
> >                 if(!areEqual(thisOne.listEquivalentClasses().toList(),
> > thatOne.listEquivalentClasses().toList()))
> >                     return false;
> >                 // Must have the same Superclasses
> >                 if(!areEqual(thisOne.listSuperClasses().toList(),
> > thatOne.listSuperClasses().toList()))
> >                     return false;
> >                 // Must have the same Disjoint Classes
> >                 if(!areEqual(thisOne.listDisjointWith().toList(),
> > thatOne.listDisjointWith().toList()))
> >                     return false;
> >             }
> >             return true;
> >         }
> >         return false;
> >     }
> >
> >     private boolean haveEqualURI(OntResource thisURI, OntResource
thatURI){
> >         if(thisURI.isURIResource() && thatURI.isURIResource()){
> >             if(thisURI.getLocalName().equals(thatURI.getLocalName())){
> >                 if(isMapped(thisURI.getNameSpace(),
> > thatURI.getNameSpace())){
> >                     return true;
> >                 }
> >             }
> >         }
> >         return false;
> >     }
> >
> >     private boolean areEqual(OntProperty thisOne, OntProperty thatOne){
> >         return areEqual(false, thisOne, thatOne);
> >     }
> >
> >     private boolean areEqual(boolean deep, OntProperty thisOne,
> > OntProperty thatOne){
> >
> >         if(thisOne.isURIResource() && thatOne.isURIResource()){
> >             // Both properties must have the same URI to be the same
> >             if(!haveEqualURI(thisOne, thatOne))
> >                 return false;
> >
> >             if(deep){
> >                 if(thisOne.isDatatypeProperty() &&
> > !thatOne.isDatatypeProperty()) return false;
> >                 if(thisOne.isFunctionalProperty() &&
> > !thatOne.isFunctionalProperty()) return false;
> >                 if(thisOne.isInverseFunctionalProperty() &&
> > !thatOne.isInverseFunctionalProperty()) return false;
> >                 if(thisOne.isObjectProperty() &&
> > !thatOne.isObjectProperty()) return false;
> >                 if(thisOne.isSymmetricProperty() &&
> > !thatOne.isSymmetricProperty()) return false;
> >                 if(thisOne.isTransitiveProperty() &&
> > !thatOne.isTransitiveProperty()) return false;
> >                 if(!areEqual(thisOne.listRange().toList(),
> > thatOne.listRange().toList())) return false;
> >                 if(!areEqual(thisOne.listDomain().toList(),
> > thatOne.listDomain().toList())) return false;
> >
> > if(!areEqual(thisOne.listSuperProperties(true).toList(),
> > thatOne.listSuperProperties(true).toList())) return false;
> >             }
> >             return true;
> >         }
> >         return false;
> >     }
> >
> >     // This will catch UnionClass, IntersectionClass, and
ComplementClass
> >     private boolean areEqual(BooleanClassDescription thisOne,
> > BooleanClassDescription thatOne){
> >         return areEqual(thisOne.listOperands().toList(),
> > thatOne.listOperands().toList());
> >     }
> >
> >     private boolean areEqual(List<? extends OntResource> thisOne,
> > List<? extends OntResource> thatOne){
> >         for(int i = 0; i < thisOne.size(); i++ ){
> >             for(int j = 0; j < thatOne.size(); j++){
> >                 if(areEqual(thisOne.get(i), thatOne.get(j))){
> >                     thisOne.remove(i);
> >                     thatOne.remove(j);
> >                     i--;
> >                     break;
> >                 }
> >             }
> >         }
> >         if(thisOne.size() == 0 && thatOne.size() == 0) return true;
> >         return false;
> >     }
> >
> >     private boolean areEqual(Restriction thisOne, Restriction thatOne){
> >         // Same property for this restriction
> >         if(!areEqual(thisOne.getOnProperty(), thatOne.getOnProperty()))
> >             return false;
> >
> >         // Same restriction type and values
> >         if (thisOne.isAllValuesFromRestriction() &&
> > thatOne.isAllValuesFromRestriction())
> >             return
> > areEqual(thisOne.asAllValuesFromRestriction().getAllValuesFrom(),
> > thatOne.asAllValuesFromRestriction().getAllValuesFrom());
> >         if (thisOne.isSomeValuesFromRestriction() &&
> > thatOne.isSomeValuesFromRestriction())
> >             return
> > areEqual(thisOne.asSomeValuesFromRestriction().getSomeValuesFrom(),
> > thatOne.asSomeValuesFromRestriction().getSomeValuesFrom());
> >         if (thisOne.isHasValueRestriction() &&
> > thatOne.isHasValueRestriction())
> >             return
> > areEqual(thisOne.asHasValueRestriction().getHasValue(),
> > thatOne.asHasValueRestriction().getHasValue());
> >         if (thisOne.isCardinalityRestriction() &&
> > thatOne.isCardinalityRestriction())
> >             return thisOne.asCardinalityRestriction().getCardinality()
> > == thatOne.asCardinalityRestriction().getCardinality();
> >         if (thisOne.isMaxCardinalityRestriction() &&
> > thatOne.isMaxCardinalityRestriction())
> >             return
> > thisOne.asMaxCardinalityRestriction().getMaxCardinality() ==
> > thatOne.asMaxCardinalityRestriction().getMaxCardinality();
> >         if (thisOne.isMinCardinalityRestriction() &&
> > thatOne.isMinCardinalityRestriction())
> >             return
> > thisOne.asMinCardinalityRestriction().getMinCardinality() ==
> > thatOne.asMinCardinalityRestriction().getMinCardinality();
> >
> >         return false;
> >     }
> >
> >     private boolean areEqual(RDFNode thisOne, RDFNode thatOne){
> >         if(thisOne.isResource() && thatOne.isResource())
> >             return areEqual(thisOne.asResource(), thatOne.asResource());
> >         if(thisOne.isLiteral() &&  thatOne.isLiteral())
> >             return areEqual(thisOne.asLiteral(), thatOne.asLiteral());
> >         return false;
> >     }
> >
> >     private boolean areEqual(Resource thisOne, Resource thatOne){
> >         if(thisOne.canAs(OntClass.class) &&
thatOne.canAs(OntClass.class))
> >             return areEqual(thisOne.as(OntClass.class),
> > thatOne.as(OntClass.class));
> >         if(thisOne.canAs(OntProperty.class) &&
> > thatOne.canAs(OntProperty.class))
> >             return areEqual(thisOne.as(OntProperty.class),
> > thatOne.as(OntProperty.class));
> >         else
> >             return thisOne.equals(thatOne);
> >     }
> >
> >     private boolean areEqual(Literal thisOne, Literal thatOne){
> >         return this.equals(thatOne);
> >     }
> >
> >
> >
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> >
> >
> > --
> > Mark Fischer
> >
> >
> > On Wed, Apr 3, 2013 at 12:23 PM, aarthi <aa...@gmail.com>
wrote:
> >
> > > hi...  i need to compare two ontologies using jena... if i take two
> > > classes, each in a separate ontology. in order to say these two
classes
> > are
> > > structurally equivalent, i need to say all the super class for the 2
> > >  classes we considered are similar.. can anyone help me for the code
> > >
> > >
> > > On Sat, Mar 30, 2013 at 8:24 AM, aarthi <aa...@gmail.com>
> > wrote:
> > >
> > > > hi thanks.. it worked correctly. because i didn't add the jena files
> > > > correctly.sorry for that. and  i need to retrieve the class and
> > > > properties names from an ontology. if i execute my previous code i
> > > > just got the triple format. is there anyway to store the class and
> > > > properties names in a separate file or in a database? if its
possible
> > > > please guide me.....
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > On 3/30/13, Andy Seaborne <an...@apache.org> wrote:
> > > > > Which version of Jena is this?
> > > > >
> > > > > Jena doesn't use Apache commons logging (it did a long time ago, I
> > > > > think).  For some libraries we use, there is a Apache commons
logging
> > > > > dependency, which is met via jcl-over-slf4j in the POMs.
> > > > >
> > > > > But that's nowhere near PropertyImpl, which has a reference to
SLF4J
> > > > > nowadays.
> > > > >
> > > > >       Andy
> > > > >
> > > > >  >>> Exception in thread "main" java.lang.NoClassDefFoundError:
> > > > >  >>> org/apache/commons/logging/LogFactory
> > > > >  >>>          at
> > > > >  >>>
> > > >
com.hp.hpl.jena.rdf.model.impl.PropertyImpl.<clinit>(PropertyImpl.java
> > > > >  >> :
> > > > >  >>> 58)
> > > > >
> > > > >
> > > > > On 30/03/13 13:38, John A. Fereira wrote:
> > > > >> Specifically, you'll need to include the commons-logging jar
file in
> > > > your
> > > > >> classpath.  Typically that would mean specifying a directory
which
> > > > >> includes that jar file as well as the jar files for the jena
library
> > > and
> > > > >> any other dependency library.  You'll probably also need to
include
> > > one
> > > > >> for log4j or simple logging (slf4j) library.
> > > > >>
> > > > >>> -----Original Message-----
> > > > >>> From: Milorad Tosic [mailto:mbtosic@yahoo.com]
> > > > >>> Sent: Saturday, March 30, 2013 9:07 AM
> > > > >>> To: aarthi; users
> > > > >>> Subject: Re:
> > > > >>>
> > > > >>> Looks like you need to include an additional library for
> > > > >>> org.apache.commons.logging.LogFactory class.
> > > > >>>
> > > > >>> Regards,
> > > > >>> Milorad
> > > > >>>
> > > > >>>
> > > > >>>
> > > > >>>
> > > > >>>
> > > > >>>> ________________________________
> > > > >>>> From: aarthi <aa...@gmail.com>
> > > > >>>> To: Milorad Tosic <mb...@yahoo.com>; users <
> > users@jena.apache.org
> > > >
> > > > >>>> Sent: Saturday, March 30, 2013 1:56 PM
> > > > >>>> Subject:
> > > > >>>>
> > > > >>>> hi..
> > > > >>>>    i'm doing my project with ontology. i need to retrieve the
> > class
> > > > and
> > > > >>>> properties names in order to compare them for equality. to
> > retrieve
> > > > >>> the
> > > > >>>> class an property names i'm using a java code. i have attached
> > that
> > > > >>>> code with this mail. but i got some error, I don't know how to
> > > resolve
> > > > >>>> that. for that i had import com.hp.hpl.jena package. i dont get
> > the
> > > > >>>> classpath files and javadoc files. is it enough if i add only
the
> > > > >>>> source package? pls help me....
> > > > >>>>
> > > > >>>> this is my code:
> > > > >>>>
> > > > >>>>
> > > > >>>> //package testejena;
> > > > >>>> import com.hp.hpl.jena.ontology.OntClass;
> > > > >>>> import com.hp.hpl.jena.ontology.OntModel;
> > > > >>>> import com.hp.hpl.jena.ontology.OntModelSpec;
> > > > >>>> import com.hp.hpl.jena.rdf.model.ModelFactory;
> > > > >>>> import com.hp.hpl.jena.util.FileManager; import
> > > > >>>> com.hp.hpl.jena.util.iterator.ExtendedIterator;
> > > > >>>> import java.io.InputStream;
> > > > >>>> import java.util.Iterator;
> > > > >>>>PropertyImpl
> > > > >>>> public class testeProp {
> > > > >>>>      static final String inputFileName = "newspaper.owl";
> > > > >>>>      public static void main(String args[]) {
> > > > >>>>          try {
> > > > >>>>              //create the reasoning model using the base
> > > > >>>>              OntModel inf =
> > > > >>>> ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);
> > > > >>>>
> > > > >>>>              // use the FileManager to find the input file
> > > > >>>>              InputStream in =
> > FileManager.get().open(inputFileName);
> > > > >>>>              if (in == null) {
> > > > >>>>                  throw new IllegalArgumentException("File: " +
> > > > >>>> inputFileName + " not found");
> > > > >>>>              }
> > > > >>>>
> > > > >>>>              inf.read(in, "");
> > > > >>>>
> > > > >>>>              String URI =
> > > > >>>> "http://www.owl-ontologies.com/Ontology1363337688.owl#";
> > > > >>>>
> > > > >>>>              ExtendedIterator classes = inf.listClasses();
> > > > >>>>              while (classes.hasNext()) {
> > > > >>>>                  OntClass essaClasse = (OntClass)
classes.next();
> > > > >>>>
> > > > >>>>                  String vClasse =
> > > > essaClasse.getLocalName().toString();
> > > > >>>>
> > > > >>>>                  if (essaClasse.hasSubClass()) {
> > > > >>>>                      System.out.println("Classe: " + vClasse);
> > > > >>>>                      OntClass cla = inf.getOntClass(URI +
> > vClasse);
> > > > >>>>                      for (Iterator i = cla.listSubClasses();
> > > > >>>> i.hasNext();) {
> > > > >>>>                          OntClass c = (OntClass) i.next();
> > > > >>>>                          System.out.print("   " +
c.getLocalName()
> > > + "
> > > > >>> "
> > > > >>>> + "\n");
> > > > >>>>                      }
> > > > >>>>                  }
> > > > >>>>              }
> > > > >>>>          } catch (Exception e) {
> > > > >>>>              System.out.println("there may be error");
> > > > >>>>              System.out.println(e.getMessage());
> > > > >>>>          }
> > > > >>>>      }
> > > > >>>> }
> > > > >>>>
> > > > >>>>
> > > > >>>>
> > > ----------------------------------------------------------------------
> > > > >>> -
> > > > >>>> --------------------------- if i run my program i got the
> > following
> > > > >>>> error:
> > > > >>>>
> > > > >>>>
> > > > >>>> Exception in thread "main" java.lang.NoClassDefFoundError:
> > > > >>>> org/apache/commons/logging/LogFactory
> > > > >>>>          at
> > > > >>>>
> > > com.hp.hpl.jena.rdf.model.impl.PropertyImpl.<clinit>(PropertyImpl.java
> > > > >>> :
> > > > >>>> 58)
> > > > >>>>          at
> > > > >>>>
> > > com.hp.hpl.jena.enhanced.BuiltinPersonalities.<clinit>(BuiltinPersonal
> > > > >>> i
> > > > >>>> ties.java:28)
> > > > >>>>          at
> > > > >>>>
com.hp.hpl.jena.rdf.model.impl.ModelCom.<init>(ModelCom.java:51)
> > > > >>>>          at
> > > > >>>>
> > > com.hp.hpl.jena.rdf.model.ModelFactory.createDefaultModel(ModelFactory
> > > > >>> .
> > > > >>>> java:119)
> > > > >>>>          at
> > > > >>>>
> > > com.hp.hpl.jena.rdf.model.ModelFactory.createDefaultModel(ModelFactory
> > > > >>> .
> > > > >>>> java:113)
> > > > >>>>          at
> > > > >>>>
> > > com.hp.hpl.jena.rdf.model.impl.ModelSpecImpl.<clinit>(ModelSpecImpl.ja
> > > > >>> v
> > > > >>>> a:56)
> > > > >>>>          at testeProp.main(testeProp.java:16) Caused by:
> > > > >>>> java.lang.ClassNotFoundException:
> > > > >>>> org.apache.commons.logging.LogFactory
> > > > >>>>          at
java.net.URLClassLoader$1.run(URLClassLoader.java:202)
> > > > >>>>          at java.security.AccessController.doPrivileged(Native
> > > Method)
> > > > >>>>          at
> > > java.net.URLClassLoader.findClass(URLClassLoader.java:190)
> > > > >>>>          at
java.lang.ClassLoader.loadClass(ClassLoader.java:307)
> > > > >>>>          at
> > > > >>>> sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
> > > > >>>>          at
java.lang.ClassLoader.loadClass(ClassLoader.java:248)
> > > > >>>>          ... 7 more
> > > > >>>> Java Result: 1
> > > > >>>> BUILD SUCCESSFUL (total time: 0 seconds)
> > > > >>>>
> > > > >>>>
> > > > >>>>
> > > > >>>>
> > > > >>>>
> > > > >>>>
> > > > >>>> please anyone help me...
> > > > >>>>
> > > > >>>>
> > > > >>>>
> > > > >>
> > > > >
> > > > >
> > > >
> > >
> >

Re:

Posted by aarthi <aa...@gmail.com>.
hi can you send me the code for ismapped() function...


On Wed, Apr 3, 2013 at 11:16 AM, Mark Fischer <mr...@gmail.com>wrote:

> I did something similar a while back.
> This doesn't quite do what you want, but it may be close.
> I compared inequivalent classes and such as well as super classes.
>
>
> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>     private boolean areEqual(OntClass thisOne, OntClass thatOne){
>         return areEqual(false, thisOne, thatOne);
>     }
>
>     private boolean areEqual(boolean deep, OntClass thisOne, OntClass
> thatOne){
>         if (thisOne.isUnionClass() && thatOne.isUnionClass()) {
>             return areEqual(thisOne.asUnionClass(),
> thatOne.asUnionClass());
>         } else if (thisOne.isIntersectionClass() &&
> thatOne.isIntersectionClass()) {
>             return areEqual(thisOne.asIntersectionClass(),
> thatOne.asIntersectionClass());
>         } else if (thisOne.isComplementClass() &&
> thatOne.isComplementClass()) {
>             return areEqual(thisOne.asComplementClass(),
> thatOne.asComplementClass());
>         } else if (thisOne.isRestriction() && thatOne.isRestriction()) {
>             return areEqual(thisOne.asRestriction(),
> thatOne.asRestriction());
>         } else if (thisOne.isURIResource() && thatOne.isURIResource()) {
>             // Both classes must have the same URI to be the same
>             if(!haveEqualURI(thisOne, thatOne))
>                 return false;
>
>             if(deep){
>                 // Must have the same Equivalent Classes
>                 if(!areEqual(thisOne.listEquivalentClasses().toList(),
> thatOne.listEquivalentClasses().toList()))
>                     return false;
>                 // Must have the same Superclasses
>                 if(!areEqual(thisOne.listSuperClasses().toList(),
> thatOne.listSuperClasses().toList()))
>                     return false;
>                 // Must have the same Disjoint Classes
>                 if(!areEqual(thisOne.listDisjointWith().toList(),
> thatOne.listDisjointWith().toList()))
>                     return false;
>             }
>             return true;
>         }
>         return false;
>     }
>
>     private boolean haveEqualURI(OntResource thisURI, OntResource thatURI){
>         if(thisURI.isURIResource() && thatURI.isURIResource()){
>             if(thisURI.getLocalName().equals(thatURI.getLocalName())){
>                 if(isMapped(thisURI.getNameSpace(),
> thatURI.getNameSpace())){
>                     return true;
>                 }
>             }
>         }
>         return false;
>     }
>
>     private boolean areEqual(OntProperty thisOne, OntProperty thatOne){
>         return areEqual(false, thisOne, thatOne);
>     }
>
>     private boolean areEqual(boolean deep, OntProperty thisOne,
> OntProperty thatOne){
>
>         if(thisOne.isURIResource() && thatOne.isURIResource()){
>             // Both properties must have the same URI to be the same
>             if(!haveEqualURI(thisOne, thatOne))
>                 return false;
>
>             if(deep){
>                 if(thisOne.isDatatypeProperty() &&
> !thatOne.isDatatypeProperty()) return false;
>                 if(thisOne.isFunctionalProperty() &&
> !thatOne.isFunctionalProperty()) return false;
>                 if(thisOne.isInverseFunctionalProperty() &&
> !thatOne.isInverseFunctionalProperty()) return false;
>                 if(thisOne.isObjectProperty() &&
> !thatOne.isObjectProperty()) return false;
>                 if(thisOne.isSymmetricProperty() &&
> !thatOne.isSymmetricProperty()) return false;
>                 if(thisOne.isTransitiveProperty() &&
> !thatOne.isTransitiveProperty()) return false;
>                 if(!areEqual(thisOne.listRange().toList(),
> thatOne.listRange().toList())) return false;
>                 if(!areEqual(thisOne.listDomain().toList(),
> thatOne.listDomain().toList())) return false;
>
> if(!areEqual(thisOne.listSuperProperties(true).toList(),
> thatOne.listSuperProperties(true).toList())) return false;
>             }
>             return true;
>         }
>         return false;
>     }
>
>     // This will catch UnionClass, IntersectionClass, and ComplementClass
>     private boolean areEqual(BooleanClassDescription thisOne,
> BooleanClassDescription thatOne){
>         return areEqual(thisOne.listOperands().toList(),
> thatOne.listOperands().toList());
>     }
>
>     private boolean areEqual(List<? extends OntResource> thisOne,
> List<? extends OntResource> thatOne){
>         for(int i = 0; i < thisOne.size(); i++ ){
>             for(int j = 0; j < thatOne.size(); j++){
>                 if(areEqual(thisOne.get(i), thatOne.get(j))){
>                     thisOne.remove(i);
>                     thatOne.remove(j);
>                     i--;
>                     break;
>                 }
>             }
>         }
>         if(thisOne.size() == 0 && thatOne.size() == 0) return true;
>         return false;
>     }
>
>     private boolean areEqual(Restriction thisOne, Restriction thatOne){
>         // Same property for this restriction
>         if(!areEqual(thisOne.getOnProperty(), thatOne.getOnProperty()))
>             return false;
>
>         // Same restriction type and values
>         if (thisOne.isAllValuesFromRestriction() &&
> thatOne.isAllValuesFromRestriction())
>             return
> areEqual(thisOne.asAllValuesFromRestriction().getAllValuesFrom(),
> thatOne.asAllValuesFromRestriction().getAllValuesFrom());
>         if (thisOne.isSomeValuesFromRestriction() &&
> thatOne.isSomeValuesFromRestriction())
>             return
> areEqual(thisOne.asSomeValuesFromRestriction().getSomeValuesFrom(),
> thatOne.asSomeValuesFromRestriction().getSomeValuesFrom());
>         if (thisOne.isHasValueRestriction() &&
> thatOne.isHasValueRestriction())
>             return
> areEqual(thisOne.asHasValueRestriction().getHasValue(),
> thatOne.asHasValueRestriction().getHasValue());
>         if (thisOne.isCardinalityRestriction() &&
> thatOne.isCardinalityRestriction())
>             return thisOne.asCardinalityRestriction().getCardinality()
> == thatOne.asCardinalityRestriction().getCardinality();
>         if (thisOne.isMaxCardinalityRestriction() &&
> thatOne.isMaxCardinalityRestriction())
>             return
> thisOne.asMaxCardinalityRestriction().getMaxCardinality() ==
> thatOne.asMaxCardinalityRestriction().getMaxCardinality();
>         if (thisOne.isMinCardinalityRestriction() &&
> thatOne.isMinCardinalityRestriction())
>             return
> thisOne.asMinCardinalityRestriction().getMinCardinality() ==
> thatOne.asMinCardinalityRestriction().getMinCardinality();
>
>         return false;
>     }
>
>     private boolean areEqual(RDFNode thisOne, RDFNode thatOne){
>         if(thisOne.isResource() && thatOne.isResource())
>             return areEqual(thisOne.asResource(), thatOne.asResource());
>         if(thisOne.isLiteral() &&  thatOne.isLiteral())
>             return areEqual(thisOne.asLiteral(), thatOne.asLiteral());
>         return false;
>     }
>
>     private boolean areEqual(Resource thisOne, Resource thatOne){
>         if(thisOne.canAs(OntClass.class) && thatOne.canAs(OntClass.class))
>             return areEqual(thisOne.as(OntClass.class),
> thatOne.as(OntClass.class));
>         if(thisOne.canAs(OntProperty.class) &&
> thatOne.canAs(OntProperty.class))
>             return areEqual(thisOne.as(OntProperty.class),
> thatOne.as(OntProperty.class));
>         else
>             return thisOne.equals(thatOne);
>     }
>
>     private boolean areEqual(Literal thisOne, Literal thatOne){
>         return this.equals(thatOne);
>     }
>
>
> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>
> --
> Mark Fischer
>
>
> On Wed, Apr 3, 2013 at 12:23 PM, aarthi <aa...@gmail.com> wrote:
>
> > hi...  i need to compare two ontologies using jena... if i take two
> > classes, each in a separate ontology. in order to say these two classes
> are
> > structurally equivalent, i need to say all the super class for the 2
> >  classes we considered are similar.. can anyone help me for the code
> >
> >
> > On Sat, Mar 30, 2013 at 8:24 AM, aarthi <aa...@gmail.com>
> wrote:
> >
> > > hi thanks.. it worked correctly. because i didn't add the jena files
> > > correctly.sorry for that. and  i need to retrieve the class and
> > > properties names from an ontology. if i execute my previous code i
> > > just got the triple format. is there anyway to store the class and
> > > properties names in a separate file or in a database? if its possible
> > > please guide me.....
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > On 3/30/13, Andy Seaborne <an...@apache.org> wrote:
> > > > Which version of Jena is this?
> > > >
> > > > Jena doesn't use Apache commons logging (it did a long time ago, I
> > > > think).  For some libraries we use, there is a Apache commons logging
> > > > dependency, which is met via jcl-over-slf4j in the POMs.
> > > >
> > > > But that's nowhere near PropertyImpl, which has a reference to SLF4J
> > > > nowadays.
> > > >
> > > >       Andy
> > > >
> > > >  >>> Exception in thread "main" java.lang.NoClassDefFoundError:
> > > >  >>> org/apache/commons/logging/LogFactory
> > > >  >>>          at
> > > >  >>>
> > > com.hp.hpl.jena.rdf.model.impl.PropertyImpl.<clinit>(PropertyImpl.java
> > > >  >> :
> > > >  >>> 58)
> > > >
> > > >
> > > > On 30/03/13 13:38, John A. Fereira wrote:
> > > >> Specifically, you'll need to include the commons-logging jar file in
> > > your
> > > >> classpath.  Typically that would mean specifying a directory which
> > > >> includes that jar file as well as the jar files for the jena library
> > and
> > > >> any other dependency library.  You'll probably also need to include
> > one
> > > >> for log4j or simple logging (slf4j) library.
> > > >>
> > > >>> -----Original Message-----
> > > >>> From: Milorad Tosic [mailto:mbtosic@yahoo.com]
> > > >>> Sent: Saturday, March 30, 2013 9:07 AM
> > > >>> To: aarthi; users
> > > >>> Subject: Re:
> > > >>>
> > > >>> Looks like you need to include an additional library for
> > > >>> org.apache.commons.logging.LogFactory class.
> > > >>>
> > > >>> Regards,
> > > >>> Milorad
> > > >>>
> > > >>>
> > > >>>
> > > >>>
> > > >>>
> > > >>>> ________________________________
> > > >>>> From: aarthi <aa...@gmail.com>
> > > >>>> To: Milorad Tosic <mb...@yahoo.com>; users <
> users@jena.apache.org
> > >
> > > >>>> Sent: Saturday, March 30, 2013 1:56 PM
> > > >>>> Subject:
> > > >>>>
> > > >>>> hi..
> > > >>>>    i'm doing my project with ontology. i need to retrieve the
> class
> > > and
> > > >>>> properties names in order to compare them for equality. to
> retrieve
> > > >>> the
> > > >>>> class an property names i'm using a java code. i have attached
> that
> > > >>>> code with this mail. but i got some error, I don't know how to
> > resolve
> > > >>>> that. for that i had import com.hp.hpl.jena package. i dont get
> the
> > > >>>> classpath files and javadoc files. is it enough if i add only the
> > > >>>> source package? pls help me....
> > > >>>>
> > > >>>> this is my code:
> > > >>>>
> > > >>>>
> > > >>>> //package testejena;
> > > >>>> import com.hp.hpl.jena.ontology.OntClass;
> > > >>>> import com.hp.hpl.jena.ontology.OntModel;
> > > >>>> import com.hp.hpl.jena.ontology.OntModelSpec;
> > > >>>> import com.hp.hpl.jena.rdf.model.ModelFactory;
> > > >>>> import com.hp.hpl.jena.util.FileManager; import
> > > >>>> com.hp.hpl.jena.util.iterator.ExtendedIterator;
> > > >>>> import java.io.InputStream;
> > > >>>> import java.util.Iterator;
> > > >>>>PropertyImpl
> > > >>>> public class testeProp {
> > > >>>>      static final String inputFileName = "newspaper.owl";
> > > >>>>      public static void main(String args[]) {
> > > >>>>          try {
> > > >>>>              //create the reasoning model using the base
> > > >>>>              OntModel inf =
> > > >>>> ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);
> > > >>>>
> > > >>>>              // use the FileManager to find the input file
> > > >>>>              InputStream in =
> FileManager.get().open(inputFileName);
> > > >>>>              if (in == null) {
> > > >>>>                  throw new IllegalArgumentException("File: " +
> > > >>>> inputFileName + " not found");
> > > >>>>              }
> > > >>>>
> > > >>>>              inf.read(in, "");
> > > >>>>
> > > >>>>              String URI =
> > > >>>> "http://www.owl-ontologies.com/Ontology1363337688.owl#";
> > > >>>>
> > > >>>>              ExtendedIterator classes = inf.listClasses();
> > > >>>>              while (classes.hasNext()) {
> > > >>>>                  OntClass essaClasse = (OntClass) classes.next();
> > > >>>>
> > > >>>>                  String vClasse =
> > > essaClasse.getLocalName().toString();
> > > >>>>
> > > >>>>                  if (essaClasse.hasSubClass()) {
> > > >>>>                      System.out.println("Classe: " + vClasse);
> > > >>>>                      OntClass cla = inf.getOntClass(URI +
> vClasse);
> > > >>>>                      for (Iterator i = cla.listSubClasses();
> > > >>>> i.hasNext();) {
> > > >>>>                          OntClass c = (OntClass) i.next();
> > > >>>>                          System.out.print("   " + c.getLocalName()
> > + "
> > > >>> "
> > > >>>> + "\n");
> > > >>>>                      }
> > > >>>>                  }
> > > >>>>              }
> > > >>>>          } catch (Exception e) {
> > > >>>>              System.out.println("there may be error");
> > > >>>>              System.out.println(e.getMessage());
> > > >>>>          }
> > > >>>>      }
> > > >>>> }
> > > >>>>
> > > >>>>
> > > >>>>
> > ----------------------------------------------------------------------
> > > >>> -
> > > >>>> --------------------------- if i run my program i got the
> following
> > > >>>> error:
> > > >>>>
> > > >>>>
> > > >>>> Exception in thread "main" java.lang.NoClassDefFoundError:
> > > >>>> org/apache/commons/logging/LogFactory
> > > >>>>          at
> > > >>>>
> > com.hp.hpl.jena.rdf.model.impl.PropertyImpl.<clinit>(PropertyImpl.java
> > > >>> :
> > > >>>> 58)
> > > >>>>          at
> > > >>>>
> > com.hp.hpl.jena.enhanced.BuiltinPersonalities.<clinit>(BuiltinPersonal
> > > >>> i
> > > >>>> ties.java:28)
> > > >>>>          at
> > > >>>> com.hp.hpl.jena.rdf.model.impl.ModelCom.<init>(ModelCom.java:51)
> > > >>>>          at
> > > >>>>
> > com.hp.hpl.jena.rdf.model.ModelFactory.createDefaultModel(ModelFactory
> > > >>> .
> > > >>>> java:119)
> > > >>>>          at
> > > >>>>
> > com.hp.hpl.jena.rdf.model.ModelFactory.createDefaultModel(ModelFactory
> > > >>> .
> > > >>>> java:113)
> > > >>>>          at
> > > >>>>
> > com.hp.hpl.jena.rdf.model.impl.ModelSpecImpl.<clinit>(ModelSpecImpl.ja
> > > >>> v
> > > >>>> a:56)
> > > >>>>          at testeProp.main(testeProp.java:16) Caused by:
> > > >>>> java.lang.ClassNotFoundException:
> > > >>>> org.apache.commons.logging.LogFactory
> > > >>>>          at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
> > > >>>>          at java.security.AccessController.doPrivileged(Native
> > Method)
> > > >>>>          at
> > java.net.URLClassLoader.findClass(URLClassLoader.java:190)
> > > >>>>          at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
> > > >>>>          at
> > > >>>> sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
> > > >>>>          at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
> > > >>>>          ... 7 more
> > > >>>> Java Result: 1
> > > >>>> BUILD SUCCESSFUL (total time: 0 seconds)
> > > >>>>
> > > >>>>
> > > >>>>
> > > >>>>
> > > >>>>
> > > >>>>
> > > >>>> please anyone help me...
> > > >>>>
> > > >>>>
> > > >>>>
> > > >>
> > > >
> > > >
> > >
> >
>

Re:

Posted by Mark Fischer <mr...@gmail.com>.
I did something similar a while back.
This doesn't quite do what you want, but it may be close.
I compared inequivalent classes and such as well as super classes.

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    private boolean areEqual(OntClass thisOne, OntClass thatOne){
        return areEqual(false, thisOne, thatOne);
    }

    private boolean areEqual(boolean deep, OntClass thisOne, OntClass thatOne){
        if (thisOne.isUnionClass() && thatOne.isUnionClass()) {
            return areEqual(thisOne.asUnionClass(), thatOne.asUnionClass());
        } else if (thisOne.isIntersectionClass() &&
thatOne.isIntersectionClass()) {
            return areEqual(thisOne.asIntersectionClass(),
thatOne.asIntersectionClass());
        } else if (thisOne.isComplementClass() && thatOne.isComplementClass()) {
            return areEqual(thisOne.asComplementClass(),
thatOne.asComplementClass());
        } else if (thisOne.isRestriction() && thatOne.isRestriction()) {
            return areEqual(thisOne.asRestriction(), thatOne.asRestriction());
        } else if (thisOne.isURIResource() && thatOne.isURIResource()) {
            // Both classes must have the same URI to be the same
            if(!haveEqualURI(thisOne, thatOne))
                return false;

            if(deep){
                // Must have the same Equivalent Classes
                if(!areEqual(thisOne.listEquivalentClasses().toList(),
thatOne.listEquivalentClasses().toList()))
                    return false;
                // Must have the same Superclasses
                if(!areEqual(thisOne.listSuperClasses().toList(),
thatOne.listSuperClasses().toList()))
                    return false;
                // Must have the same Disjoint Classes
                if(!areEqual(thisOne.listDisjointWith().toList(),
thatOne.listDisjointWith().toList()))
                    return false;
            }
            return true;
        }
        return false;
    }

    private boolean haveEqualURI(OntResource thisURI, OntResource thatURI){
        if(thisURI.isURIResource() && thatURI.isURIResource()){
            if(thisURI.getLocalName().equals(thatURI.getLocalName())){
                if(isMapped(thisURI.getNameSpace(), thatURI.getNameSpace())){
                    return true;
                }
            }
        }
        return false;
    }

    private boolean areEqual(OntProperty thisOne, OntProperty thatOne){
        return areEqual(false, thisOne, thatOne);
    }

    private boolean areEqual(boolean deep, OntProperty thisOne,
OntProperty thatOne){

        if(thisOne.isURIResource() && thatOne.isURIResource()){
            // Both properties must have the same URI to be the same
            if(!haveEqualURI(thisOne, thatOne))
                return false;

            if(deep){
                if(thisOne.isDatatypeProperty() &&
!thatOne.isDatatypeProperty()) return false;
                if(thisOne.isFunctionalProperty() &&
!thatOne.isFunctionalProperty()) return false;
                if(thisOne.isInverseFunctionalProperty() &&
!thatOne.isInverseFunctionalProperty()) return false;
                if(thisOne.isObjectProperty() &&
!thatOne.isObjectProperty()) return false;
                if(thisOne.isSymmetricProperty() &&
!thatOne.isSymmetricProperty()) return false;
                if(thisOne.isTransitiveProperty() &&
!thatOne.isTransitiveProperty()) return false;
                if(!areEqual(thisOne.listRange().toList(),
thatOne.listRange().toList())) return false;
                if(!areEqual(thisOne.listDomain().toList(),
thatOne.listDomain().toList())) return false;

if(!areEqual(thisOne.listSuperProperties(true).toList(),
thatOne.listSuperProperties(true).toList())) return false;
            }
            return true;
        }
        return false;
    }

    // This will catch UnionClass, IntersectionClass, and ComplementClass
    private boolean areEqual(BooleanClassDescription thisOne,
BooleanClassDescription thatOne){
        return areEqual(thisOne.listOperands().toList(),
thatOne.listOperands().toList());
    }

    private boolean areEqual(List<? extends OntResource> thisOne,
List<? extends OntResource> thatOne){
        for(int i = 0; i < thisOne.size(); i++ ){
            for(int j = 0; j < thatOne.size(); j++){
                if(areEqual(thisOne.get(i), thatOne.get(j))){
                    thisOne.remove(i);
                    thatOne.remove(j);
                    i--;
                    break;
                }
            }
        }
        if(thisOne.size() == 0 && thatOne.size() == 0) return true;
        return false;
    }

    private boolean areEqual(Restriction thisOne, Restriction thatOne){
        // Same property for this restriction
        if(!areEqual(thisOne.getOnProperty(), thatOne.getOnProperty()))
            return false;

        // Same restriction type and values
        if (thisOne.isAllValuesFromRestriction() &&
thatOne.isAllValuesFromRestriction())
            return
areEqual(thisOne.asAllValuesFromRestriction().getAllValuesFrom(),
thatOne.asAllValuesFromRestriction().getAllValuesFrom());
        if (thisOne.isSomeValuesFromRestriction() &&
thatOne.isSomeValuesFromRestriction())
            return
areEqual(thisOne.asSomeValuesFromRestriction().getSomeValuesFrom(),
thatOne.asSomeValuesFromRestriction().getSomeValuesFrom());
        if (thisOne.isHasValueRestriction() && thatOne.isHasValueRestriction())
            return
areEqual(thisOne.asHasValueRestriction().getHasValue(),
thatOne.asHasValueRestriction().getHasValue());
        if (thisOne.isCardinalityRestriction() &&
thatOne.isCardinalityRestriction())
            return thisOne.asCardinalityRestriction().getCardinality()
== thatOne.asCardinalityRestriction().getCardinality();
        if (thisOne.isMaxCardinalityRestriction() &&
thatOne.isMaxCardinalityRestriction())
            return
thisOne.asMaxCardinalityRestriction().getMaxCardinality() ==
thatOne.asMaxCardinalityRestriction().getMaxCardinality();
        if (thisOne.isMinCardinalityRestriction() &&
thatOne.isMinCardinalityRestriction())
            return
thisOne.asMinCardinalityRestriction().getMinCardinality() ==
thatOne.asMinCardinalityRestriction().getMinCardinality();

        return false;
    }

    private boolean areEqual(RDFNode thisOne, RDFNode thatOne){
        if(thisOne.isResource() && thatOne.isResource())
            return areEqual(thisOne.asResource(), thatOne.asResource());
        if(thisOne.isLiteral() &&  thatOne.isLiteral())
            return areEqual(thisOne.asLiteral(), thatOne.asLiteral());
        return false;
    }

    private boolean areEqual(Resource thisOne, Resource thatOne){
        if(thisOne.canAs(OntClass.class) && thatOne.canAs(OntClass.class))
            return areEqual(thisOne.as(OntClass.class),
thatOne.as(OntClass.class));
        if(thisOne.canAs(OntProperty.class) && thatOne.canAs(OntProperty.class))
            return areEqual(thisOne.as(OntProperty.class),
thatOne.as(OntProperty.class));
        else
            return thisOne.equals(thatOne);
    }

    private boolean areEqual(Literal thisOne, Literal thatOne){
        return this.equals(thatOne);
    }

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


--
Mark Fischer


On Wed, Apr 3, 2013 at 12:23 PM, aarthi <aa...@gmail.com> wrote:

> hi...  i need to compare two ontologies using jena... if i take two
> classes, each in a separate ontology. in order to say these two classes are
> structurally equivalent, i need to say all the super class for the 2
>  classes we considered are similar.. can anyone help me for the code
>
>
> On Sat, Mar 30, 2013 at 8:24 AM, aarthi <aa...@gmail.com> wrote:
>
> > hi thanks.. it worked correctly. because i didn't add the jena files
> > correctly.sorry for that. and  i need to retrieve the class and
> > properties names from an ontology. if i execute my previous code i
> > just got the triple format. is there anyway to store the class and
> > properties names in a separate file or in a database? if its possible
> > please guide me.....
> >
> >
> >
> >
> >
> >
> >
> >
> > On 3/30/13, Andy Seaborne <an...@apache.org> wrote:
> > > Which version of Jena is this?
> > >
> > > Jena doesn't use Apache commons logging (it did a long time ago, I
> > > think).  For some libraries we use, there is a Apache commons logging
> > > dependency, which is met via jcl-over-slf4j in the POMs.
> > >
> > > But that's nowhere near PropertyImpl, which has a reference to SLF4J
> > > nowadays.
> > >
> > >       Andy
> > >
> > >  >>> Exception in thread "main" java.lang.NoClassDefFoundError:
> > >  >>> org/apache/commons/logging/LogFactory
> > >  >>>          at
> > >  >>>
> > com.hp.hpl.jena.rdf.model.impl.PropertyImpl.<clinit>(PropertyImpl.java
> > >  >> :
> > >  >>> 58)
> > >
> > >
> > > On 30/03/13 13:38, John A. Fereira wrote:
> > >> Specifically, you'll need to include the commons-logging jar file in
> > your
> > >> classpath.  Typically that would mean specifying a directory which
> > >> includes that jar file as well as the jar files for the jena library
> and
> > >> any other dependency library.  You'll probably also need to include
> one
> > >> for log4j or simple logging (slf4j) library.
> > >>
> > >>> -----Original Message-----
> > >>> From: Milorad Tosic [mailto:mbtosic@yahoo.com]
> > >>> Sent: Saturday, March 30, 2013 9:07 AM
> > >>> To: aarthi; users
> > >>> Subject: Re:
> > >>>
> > >>> Looks like you need to include an additional library for
> > >>> org.apache.commons.logging.LogFactory class.
> > >>>
> > >>> Regards,
> > >>> Milorad
> > >>>
> > >>>
> > >>>
> > >>>
> > >>>
> > >>>> ________________________________
> > >>>> From: aarthi <aa...@gmail.com>
> > >>>> To: Milorad Tosic <mb...@yahoo.com>; users <users@jena.apache.org
> >
> > >>>> Sent: Saturday, March 30, 2013 1:56 PM
> > >>>> Subject:
> > >>>>
> > >>>> hi..
> > >>>>    i'm doing my project with ontology. i need to retrieve the class
> > and
> > >>>> properties names in order to compare them for equality. to retrieve
> > >>> the
> > >>>> class an property names i'm using a java code. i have attached that
> > >>>> code with this mail. but i got some error, I don't know how to
> resolve
> > >>>> that. for that i had import com.hp.hpl.jena package. i dont get the
> > >>>> classpath files and javadoc files. is it enough if i add only the
> > >>>> source package? pls help me....
> > >>>>
> > >>>> this is my code:
> > >>>>
> > >>>>
> > >>>> //package testejena;
> > >>>> import com.hp.hpl.jena.ontology.OntClass;
> > >>>> import com.hp.hpl.jena.ontology.OntModel;
> > >>>> import com.hp.hpl.jena.ontology.OntModelSpec;
> > >>>> import com.hp.hpl.jena.rdf.model.ModelFactory;
> > >>>> import com.hp.hpl.jena.util.FileManager; import
> > >>>> com.hp.hpl.jena.util.iterator.ExtendedIterator;
> > >>>> import java.io.InputStream;
> > >>>> import java.util.Iterator;
> > >>>>PropertyImpl
> > >>>> public class testeProp {
> > >>>>      static final String inputFileName = "newspaper.owl";
> > >>>>      public static void main(String args[]) {
> > >>>>          try {
> > >>>>              //create the reasoning model using the base
> > >>>>              OntModel inf =
> > >>>> ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);
> > >>>>
> > >>>>              // use the FileManager to find the input file
> > >>>>              InputStream in = FileManager.get().open(inputFileName);
> > >>>>              if (in == null) {
> > >>>>                  throw new IllegalArgumentException("File: " +
> > >>>> inputFileName + " not found");
> > >>>>              }
> > >>>>
> > >>>>              inf.read(in, "");
> > >>>>
> > >>>>              String URI =
> > >>>> "http://www.owl-ontologies.com/Ontology1363337688.owl#";
> > >>>>
> > >>>>              ExtendedIterator classes = inf.listClasses();
> > >>>>              while (classes.hasNext()) {
> > >>>>                  OntClass essaClasse = (OntClass) classes.next();
> > >>>>
> > >>>>                  String vClasse =
> > essaClasse.getLocalName().toString();
> > >>>>
> > >>>>                  if (essaClasse.hasSubClass()) {
> > >>>>                      System.out.println("Classe: " + vClasse);
> > >>>>                      OntClass cla = inf.getOntClass(URI + vClasse);
> > >>>>                      for (Iterator i = cla.listSubClasses();
> > >>>> i.hasNext();) {
> > >>>>                          OntClass c = (OntClass) i.next();
> > >>>>                          System.out.print("   " + c.getLocalName()
> + "
> > >>> "
> > >>>> + "\n");
> > >>>>                      }
> > >>>>                  }
> > >>>>              }
> > >>>>          } catch (Exception e) {
> > >>>>              System.out.println("there may be error");
> > >>>>              System.out.println(e.getMessage());
> > >>>>          }
> > >>>>      }
> > >>>> }
> > >>>>
> > >>>>
> > >>>>
> ----------------------------------------------------------------------
> > >>> -
> > >>>> --------------------------- if i run my program i got the following
> > >>>> error:
> > >>>>
> > >>>>
> > >>>> Exception in thread "main" java.lang.NoClassDefFoundError:
> > >>>> org/apache/commons/logging/LogFactory
> > >>>>          at
> > >>>>
> com.hp.hpl.jena.rdf.model.impl.PropertyImpl.<clinit>(PropertyImpl.java
> > >>> :
> > >>>> 58)
> > >>>>          at
> > >>>>
> com.hp.hpl.jena.enhanced.BuiltinPersonalities.<clinit>(BuiltinPersonal
> > >>> i
> > >>>> ties.java:28)
> > >>>>          at
> > >>>> com.hp.hpl.jena.rdf.model.impl.ModelCom.<init>(ModelCom.java:51)
> > >>>>          at
> > >>>>
> com.hp.hpl.jena.rdf.model.ModelFactory.createDefaultModel(ModelFactory
> > >>> .
> > >>>> java:119)
> > >>>>          at
> > >>>>
> com.hp.hpl.jena.rdf.model.ModelFactory.createDefaultModel(ModelFactory
> > >>> .
> > >>>> java:113)
> > >>>>          at
> > >>>>
> com.hp.hpl.jena.rdf.model.impl.ModelSpecImpl.<clinit>(ModelSpecImpl.ja
> > >>> v
> > >>>> a:56)
> > >>>>          at testeProp.main(testeProp.java:16) Caused by:
> > >>>> java.lang.ClassNotFoundException:
> > >>>> org.apache.commons.logging.LogFactory
> > >>>>          at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
> > >>>>          at java.security.AccessController.doPrivileged(Native
> Method)
> > >>>>          at
> java.net.URLClassLoader.findClass(URLClassLoader.java:190)
> > >>>>          at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
> > >>>>          at
> > >>>> sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
> > >>>>          at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
> > >>>>          ... 7 more
> > >>>> Java Result: 1
> > >>>> BUILD SUCCESSFUL (total time: 0 seconds)
> > >>>>
> > >>>>
> > >>>>
> > >>>>
> > >>>>
> > >>>>
> > >>>> please anyone help me...
> > >>>>
> > >>>>
> > >>>>
> > >>
> > >
> > >
> >
>