From: Rodrigo A. <rca...@gm...> - 2015-08-14 15:11:11
|
Hi, I've being looking for a way to use OWL-API and Pellet in a multithread application. Is it possible?! What dependencies should I use?? Actually, I'd like to load a couple ontologies (mostly TBox) and run pellet inferences (classify and realize). Indeed, I was able do so in separated threads... Then, I'd spawn some threads to get properties information, like range, domain... individuals from range class, etc... (I'm translating instances from one ontology to another) I've tried to use Pellet 2.3.2 from https://github.com/complexible/pellet but there were concurrency issues... It worked sometimes... sometimes it crashed or stopped... After searching a lot about it, I've found about this Pellet fork <http://mvnrepository.com/artifact/net.sourceforge.owlapi/pellet-owlapi-ignazio1977/2.4.0-ignazio1977> which would be a pellet with support for OWL-API 4... I've also found out that the thread safe version of OWL-API is in the package owl-tools... (although I couldn't find the ThreadSafe* classes.... ) Finally, after this search, I've defined the a POM with the following dependencies: <dependencies> <dependency> <groupId>org.apache.jena</groupId> <artifactId>apache-jena-libs</artifactId> <version>2.13.0</version> <type>pom</type> <exclusions> <exclusion> <artifactId>slf4j-log4j12</artifactId> <groupId>org.slf4j</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>net.sourceforge.owlapi</groupId> <artifactId>pellet-core-ignazio1977</artifactId> <version>2.4.0-ignazio1977</version> </dependency> <dependency> <groupId>net.sourceforge.owlapi</groupId> <artifactId>pellet-owlapi-ignazio1977</artifactId> <version>2.4.0-ignazio1977</version> </dependency> <dependency> <groupId>net.sourceforge.owlapi</groupId> <artifactId>pellet-query-ignazio1977</artifactId> <version>2.4.0-ignazio1977</version> </dependency> <dependency> <groupId>net.sourceforge.owlapi</groupId> <artifactId>owlapi-tools</artifactId> <version>4.0.2</version> </dependency> </dependencies> Now, when running the following steps: int availableProcessors = Runtime.getRuntime().availableProcessors(); this.executor = Executors.newFixedThreadPool(availableProcessors); this.srcOWLManager = OWLManager.createOWLOntologyManager(); this.targetOWLManager = OWLManager.createOWLOntologyManager(); //Callable that load a model from jena to owl-api ontology Callable<OWLOntology> srcWorker = new FromJena2OWLAPI(this.srcOWLManager, srcModel); Future<OWLOntology> srcSubmit = executor.submit(srcWorker); Callable<OWLOntology> tgtWorker = new FromJena2OWLAPI(this.targetOWLManager, targetModel); Future<OWLOntology> tgtSubmit = executor.submit(tgtWorker); this.srcOntology = srcSubmit.get(5, TimeUnit.SECONDS); this.targetOntology = tgtSubmit.get(5, TimeUnit.SECONDS); //Until here, everything is fine... The ontologies are loaded successfully... this.pelletReasoner = PelletReasonerFactory.getInstance().createReasoner(this.targetOntology); But when creating the reasoner, I've got: Exception in thread "main" java.lang.NoSuchMethodError: org.semanticweb.owlapi.model.OWLDataMinCardinality.getProperty()Lorg/semanticweb/owlapi/model/OWLDataPropertyExpression; at com.clarkparsia.pellet.owlapiv3.PelletVisitor.visit( PelletVisitor.java:578) at uk.ac.manchester.cs.owl.owlapi.OWLDataMinCardinalityImpl.accept( OWLDataMinCardinalityImpl.java:105) at com.clarkparsia.pellet.owlapiv3.PelletVisitor.visit( PelletVisitor.java:652) at uk.ac.manchester.cs.owl.owlapi.OWLSubClassOfAxiomImpl.accept( OWLSubClassOfAxiomImpl.java:163) at com.clarkparsia.pellet.owlapiv3.PelletVisitor.visit( PelletVisitor.java:839) at uk.ac.manchester.cs.owl.owlapi.OWLOntologyImpl.accept( OWLOntologyImpl.java:1516) at com.clarkparsia.pellet.owlapiv3.PelletReasoner.refresh( PelletReasoner.java:967) at com.clarkparsia.pellet.owlapiv3.PelletReasoner.<init>( PelletReasoner.java:345) at com.clarkparsia.pellet.owlapiv3.PelletReasoner.<init>( PelletReasoner.java:304) at com.clarkparsia.pellet.owlapiv3.PelletReasonerFactory.createReasoner( PelletReasonerFactory.java:61) at br.rc.unesp.itranslator.owlapi.InstanceTranslator.<init>( InstanceTranslator.java:136) at br.rc.unesp.main.Main.main(Main.java:115) Using the previous version, I could initialize pellet, classify and realize... and then pass the objects to threads: Set<OWLNamedIndividual> individualsInSignature = this.srcOntology. getIndividualsInSignature(); List<Future<OWLOntology>> futures = new ArrayList<Future<OWLOntology>>(); for ( OWLNamedIndividual owlNamedIndividual : individualsInSignature) { Callable<OWLOntology> worker = new IndividualMapper( owlNamedIndividual, this.srcOWLManager, srcOntologyIRI, this.pelletReasoner, this.targetOntology.getOntologyID().getOntologyIRI().get(), translatedOntologyIRI, this.referenceAlignment ); Future<OWLOntology> submit = this.executor.submit(worker); futures.add(submit); } Inside IndividualMapper, I should work with owl-api and pellet to get properties of individuals, and so on... I'd really appreciate some help!! Rodrigo C. Antonialli ====================================== Rio Claro - SP - Brasil LinkedIn: http://www.linkedin.com/in/rcantonialli Contato: rca...@gm... Skype: rc_antonialli |
From: Ignazio P. <ipa...@gm...> - 2015-08-14 20:31:35
|
On 14 August 2015 at 16:10, Rodrigo Antonialli <rca...@gm...> wrote: > Hi, > > I've being looking for a way to use OWL-API and Pellet in a multithread > application. Is it possible?! What dependencies should I use?? > The dependencies are the same for multithread versus non multithread OWLAPI. For better multithread reliability, in OWLAPI 4.1.0 there is an OWLManager.createConcurrentOWLOntologyManager(). However, the new features are for updating an ontology. While reasoning without changes to the ontology, there won't be meaningful changes. > > Actually, I'd like to load a couple ontologies (mostly TBox) and run pellet > inferences (classify and realize). Indeed, I was able do so in separated > threads... Using the same reasoner object from multiple threads could be a problem - I've not tried Pellet, but I met with errors on this area with FaCT++ and JFact, although it was a long time ago. So, YMMV on this - you might need a synchronized wrapper around Pelle. > > Then, I'd spawn some threads to get properties information, like range, > domain... individuals from range class, etc... (I'm translating instances > from one ontology to another) > > I've tried to use Pellet 2.3.2 from https://github.com/complexible/pellet > but there were concurrency issues... It worked sometimes... sometimes it > crashed or stopped... > > After searching a lot about it, I've found about this Pellet fork which > would be a pellet with support for OWL-API 4... > For the record, the current Pellet main branch has included the changes I wrote for that fork, so building from the main Pellet repository produces an equivalent artifact. > I've also found out that the thread safe version of OWL-API is in the > package owl-tools... (although I couldn't find the ThreadSafe* classes.... ) > With OWLAPI 4.0.2 and 4.1.0 (not released yet), the multithread functionalities in OWLAPITOOLS are merged in the main repository. > Finally, after this search, I've defined the a POM with the following > dependencies: > > <dependencies> > > <dependency> > > <groupId>org.apache.jena</groupId> > > <artifactId>apache-jena-libs</artifactId> > > <version>2.13.0</version> > > <type>pom</type> > > <exclusions> > > <exclusion> > > <artifactId>slf4j-log4j12</artifactId> > > <groupId>org.slf4j</groupId> > > </exclusion> > > </exclusions> > > </dependency> > > <dependency> > > <groupId>net.sourceforge.owlapi</groupId> > > <artifactId>pellet-core-ignazio1977</artifactId> > > <version>2.4.0-ignazio1977</version> > > </dependency> > > <dependency> > > <groupId>net.sourceforge.owlapi</groupId> > > <artifactId>pellet-owlapi-ignazio1977</artifactId> > > <version>2.4.0-ignazio1977</version> > > </dependency> > > <dependency> > > <groupId>net.sourceforge.owlapi</groupId> > > <artifactId>pellet-query-ignazio1977</artifactId> > > <version>2.4.0-ignazio1977</version> > > </dependency> > > <dependency> > > <groupId>net.sourceforge.owlapi</groupId> > > <artifactId>owlapi-tools</artifactId> > > <version>4.0.2</version> > > </dependency> > > </dependencies> > > > Now, when running the following steps: > > > int availableProcessors = Runtime.getRuntime().availableProcessors(); > > this.executor = Executors.newFixedThreadPool(availableProcessors); > > this.srcOWLManager = OWLManager.createOWLOntologyManager(); > > this.targetOWLManager = OWLManager.createOWLOntologyManager(); > > //Callable that load a model from jena to owl-api ontology > > Callable<OWLOntology> srcWorker = new FromJena2OWLAPI(this.srcOWLManager, > srcModel); > > Future<OWLOntology> srcSubmit = executor.submit(srcWorker); > > Callable<OWLOntology> tgtWorker = new FromJena2OWLAPI(this.targetOWLManager, > targetModel); > > Future<OWLOntology> tgtSubmit = executor.submit(tgtWorker); > > this.srcOntology = srcSubmit.get(5, TimeUnit.SECONDS); > > this.targetOntology = tgtSubmit.get(5, TimeUnit.SECONDS); > > //Until here, everything is fine... The ontologies are loaded > successfully... > > > this.pelletReasoner = > PelletReasonerFactory.getInstance().createReasoner(this.targetOntology); > > > But when creating the reasoner, I've got: > > > Exception in thread "main" java.lang.NoSuchMethodError: > org.semanticweb.owlapi.model.OWLDataMinCardinality.getProperty()Lorg/semanticweb/owlapi/model/OWLDataPropertyExpression; > This looks lie a problem with OWLAPI versions, there might be an older version hiding in the dependencies. I don't think it depends on multithread issues - I've never met with this sort of error when playing with multithread applications. > > > Using the previous version, I could initialize pellet, classify and > realize... and then pass the objects to threads: > I would think so. This confirms that the exception you're seeing is not from the multithread use but from something else. Can you check the exact classpath being used? Something like printing out the value of System.getProperty("java.class.path") should be enough to make sure the right jars are on the classpath. Can you post the result of adding that to your application? HTH, I. > Set<OWLNamedIndividual> individualsInSignature = > this.srcOntology.getIndividualsInSignature(); > > List<Future<OWLOntology>> futures = new ArrayList<Future<OWLOntology>>(); > > for ( OWLNamedIndividual owlNamedIndividual : individualsInSignature) { > > Callable<OWLOntology> worker = new IndividualMapper( > > owlNamedIndividual, > > this.srcOWLManager, > > srcOntologyIRI, > > this.pelletReasoner, > > this.targetOntology.getOntologyID().getOntologyIRI().get(), > > translatedOntologyIRI, > > this.referenceAlignment > > ); > > Future<OWLOntology> submit = this.executor.submit(worker); > > futures.add(submit); > > } > > > Inside IndividualMapper, I should work with owl-api and pellet to get > properties of individuals, and so on... > > I'd really appreciate some help!! > > Rodrigo C. Antonialli > ====================================== > Rio Claro - SP - Brasil > LinkedIn: http://www.linkedin.com/in/rcantonialli > Contato: rca...@gm... > Skype: rc_antonialli > > ------------------------------------------------------------------------------ > > _______________________________________________ > Owlapi-developer mailing list > Owl...@li... > https://lists.sourceforge.net/lists/listinfo/owlapi-developer > |
From: Rodrigo A. <rca...@gm...> - 2015-08-17 12:38:18
|
Hi Ignazio, Thank you very much for your reply! I need to find the right version and run a simple test, because I've downloaded OWL-API 4.0.2 and Pellet (master branch from complexible/pellet <https://github.com/complexible/pellet>) and the error still remained... I've used different combinations of the jars, some maven configurations, but in all cases the error remained and I wasn't able to find an older version of owl-api at the classpath. I'll clean up everything and try again... If the error still remain, I'll post more info! Regarding the reasoner usage in multithread environment, let me ask: Suppose I've loaded an OWLOntology in the main thread, when a thread is spawned the ontology is set as a parameter (of the Callable object for example). So, inside the thread, it's referenced by a local attribute... The best approach is to create the reasoner inside the thread using this same ontology?! The inferences will be generated in the main ontology or it will be copied to each thread?! Regards Rodrigo C. Antonialli ====================================== Rio Claro - SP - Brasil LinkedIn: http://www.linkedin.com/in/rcantonialli Contato: rca...@gm... Skype: rc_antonialli On Fri, Aug 14, 2015 at 5:31 PM, Ignazio Palmisano < ipa...@gm...> wrote: > On 14 August 2015 at 16:10, Rodrigo Antonialli <rca...@gm...> > wrote: > > Hi, > > > > I've being looking for a way to use OWL-API and Pellet in a multithread > > application. Is it possible?! What dependencies should I use?? > > > > The dependencies are the same for multithread versus non multithread > OWLAPI. For better multithread reliability, in OWLAPI 4.1.0 there is > an OWLManager.createConcurrentOWLOntologyManager(). However, the new > features are for updating an ontology. While reasoning without changes > to the ontology, there won't be meaningful changes. > > > > > Actually, I'd like to load a couple ontologies (mostly TBox) and run > pellet > > inferences (classify and realize). Indeed, I was able do so in separated > > threads... > > Using the same reasoner object from multiple threads could be a > problem - I've not tried Pellet, but I met with errors on this area > with FaCT++ and JFact, although it was a long time ago. So, YMMV on > this - you might need a synchronized wrapper around Pelle. > > > > > Then, I'd spawn some threads to get properties information, like range, > > domain... individuals from range class, etc... (I'm translating instances > > from one ontology to another) > > > > I've tried to use Pellet 2.3.2 from > https://github.com/complexible/pellet > > but there were concurrency issues... It worked sometimes... sometimes it > > crashed or stopped... > > > > After searching a lot about it, I've found about this Pellet fork which > > would be a pellet with support for OWL-API 4... > > > > For the record, the current Pellet main branch has included the > changes I wrote for that fork, so building from the main Pellet > repository produces an equivalent artifact. > > > I've also found out that the thread safe version of OWL-API is in the > > package owl-tools... (although I couldn't find the ThreadSafe* > classes.... ) > > > > With OWLAPI 4.0.2 and 4.1.0 (not released yet), the multithread > functionalities in OWLAPITOOLS are merged in the main repository. > > > Finally, after this search, I've defined the a POM with the following > > dependencies: > > > > <dependencies> > > > > <dependency> > > > > <groupId>org.apache.jena</groupId> > > > > <artifactId>apache-jena-libs</artifactId> > > > > <version>2.13.0</version> > > > > <type>pom</type> > > > > <exclusions> > > > > <exclusion> > > > > <artifactId>slf4j-log4j12</artifactId> > > > > <groupId>org.slf4j</groupId> > > > > </exclusion> > > > > </exclusions> > > > > </dependency> > > > > <dependency> > > > > <groupId>net.sourceforge.owlapi</groupId> > > > > <artifactId>pellet-core-ignazio1977</artifactId> > > > > <version>2.4.0-ignazio1977</version> > > > > </dependency> > > > > <dependency> > > > > <groupId>net.sourceforge.owlapi</groupId> > > > > <artifactId>pellet-owlapi-ignazio1977</artifactId> > > > > <version>2.4.0-ignazio1977</version> > > > > </dependency> > > > > <dependency> > > > > <groupId>net.sourceforge.owlapi</groupId> > > > > <artifactId>pellet-query-ignazio1977</artifactId> > > > > <version>2.4.0-ignazio1977</version> > > > > </dependency> > > > > <dependency> > > > > <groupId>net.sourceforge.owlapi</groupId> > > > > <artifactId>owlapi-tools</artifactId> > > > > <version>4.0.2</version> > > > > </dependency> > > > > </dependencies> > > > > > > Now, when running the following steps: > > > > > > int availableProcessors = Runtime.getRuntime().availableProcessors(); > > > > this.executor = Executors.newFixedThreadPool(availableProcessors); > > > > this.srcOWLManager = OWLManager.createOWLOntologyManager(); > > > > this.targetOWLManager = OWLManager.createOWLOntologyManager(); > > > > //Callable that load a model from jena to owl-api ontology > > > > Callable<OWLOntology> srcWorker = new FromJena2OWLAPI(this.srcOWLManager, > > srcModel); > > > > Future<OWLOntology> srcSubmit = executor.submit(srcWorker); > > > > Callable<OWLOntology> tgtWorker = new > FromJena2OWLAPI(this.targetOWLManager, > > targetModel); > > > > Future<OWLOntology> tgtSubmit = executor.submit(tgtWorker); > > > > this.srcOntology = srcSubmit.get(5, TimeUnit.SECONDS); > > > > this.targetOntology = tgtSubmit.get(5, TimeUnit.SECONDS); > > > > //Until here, everything is fine... The ontologies are loaded > > successfully... > > > > > > this.pelletReasoner = > > PelletReasonerFactory.getInstance().createReasoner(this.targetOntology); > > > > > > But when creating the reasoner, I've got: > > > > > > Exception in thread "main" java.lang.NoSuchMethodError: > > > org.semanticweb.owlapi.model.OWLDataMinCardinality.getProperty()Lorg/semanticweb/owlapi/model/OWLDataPropertyExpression; > > > > This looks lie a problem with OWLAPI versions, there might be an older > version hiding in the dependencies. I don't think it depends on > multithread issues - I've never met with this sort of error when > playing with multithread applications. > > > > > > > > Using the previous version, I could initialize pellet, classify and > > realize... and then pass the objects to threads: > > > > I would think so. This confirms that the exception you're seeing is > not from the multithread use but from something else. > Can you check the exact classpath being used? Something like printing > out the value of System.getProperty("java.class.path") should be > enough to make sure the right jars are on the classpath. Can you post > the result of adding that to your application? > > HTH, > I. > > > Set<OWLNamedIndividual> individualsInSignature = > > this.srcOntology.getIndividualsInSignature(); > > > > List<Future<OWLOntology>> futures = new ArrayList<Future<OWLOntology>>(); > > > > for ( OWLNamedIndividual owlNamedIndividual : individualsInSignature) { > > > > Callable<OWLOntology> worker = new IndividualMapper( > > > > owlNamedIndividual, > > > > this.srcOWLManager, > > > > srcOntologyIRI, > > > > this.pelletReasoner, > > > > this.targetOntology.getOntologyID().getOntologyIRI().get(), > > > > translatedOntologyIRI, > > > > this.referenceAlignment > > > > ); > > > > Future<OWLOntology> submit = this.executor.submit(worker); > > > > futures.add(submit); > > > > } > > > > > > Inside IndividualMapper, I should work with owl-api and pellet to get > > properties of individuals, and so on... > > > > I'd really appreciate some help!! > > > > Rodrigo C. Antonialli > > ====================================== > > Rio Claro - SP - Brasil > > LinkedIn: http://www.linkedin.com/in/rcantonialli > > Contato: rca...@gm... > > Skype: rc_antonialli > > > > > ------------------------------------------------------------------------------ > > > > _______________________________________________ > > Owlapi-developer mailing list > > Owl...@li... > > https://lists.sourceforge.net/lists/listinfo/owlapi-developer > > > > > ------------------------------------------------------------------------------ > _______________________________________________ > Owlapi-developer mailing list > Owl...@li... > https://lists.sourceforge.net/lists/listinfo/owlapi-developer > |
From: Ignazio P. <ipa...@gm...> - 2015-08-17 14:11:08
|
On 17 Aug 2015 13:38, "Rodrigo Antonialli" <rca...@gm...> wrote: > > Hi Ignazio, > > Thank you very much for your reply! > > I need to find the right version and run a simple test, because I've downloaded OWL-API 4.0.2 and Pellet (master branch from complexible/pellet) and the error still remained... > > I've used different combinations of the jars, some maven configurations, but in all cases the error remained and I wasn't able to find an older version of owl-api at the classpath. > > I'll clean up everything and try again... If the error still remain, I'll post more info! > > Regarding the reasoner usage in multithread environment, let me ask: > > Suppose I've loaded an OWLOntology in the main thread, when a thread is spawned the ontology is set as a parameter (of the Callable object for example). So, inside the thread, it's referenced by a local attribute... The best approach is to create the reasoner inside the thread using this same ontology?! The inferences will be generated in the main ontology or it will be copied to each thread?! > Most reasoners never modify the input ontology and I believe Pellet does not modify it either. So one reasoner per thread with a shared ontology should be fine, the problem is when there are modifications ongoing. That's the main source of problems sharing a reasoner between threads - or any other object with mutable state, actually. Another source for your issues might be incomplete classpath - in 4.0.2 we had problems with some libraries not included correctly. These are fixed in the latest 4.1.0 RC4 snapshot, available on Sonatype. Might be worth trying. I. > Regards > > Rodrigo C. Antonialli > ====================================== > Rio Claro - SP - Brasil > LinkedIn: http://www.linkedin.com/in/rcantonialli > Contato: rca...@gm... > Skype: rc_antonialli > > On Fri, Aug 14, 2015 at 5:31 PM, Ignazio Palmisano < ipa...@gm...> wrote: >> >> On 14 August 2015 at 16:10, Rodrigo Antonialli <rca...@gm...> wrote: >> > Hi, >> > >> > I've being looking for a way to use OWL-API and Pellet in a multithread >> > application. Is it possible?! What dependencies should I use?? >> > >> >> The dependencies are the same for multithread versus non multithread >> OWLAPI. For better multithread reliability, in OWLAPI 4.1.0 there is >> an OWLManager.createConcurrentOWLOntologyManager(). However, the new >> features are for updating an ontology. While reasoning without changes >> to the ontology, there won't be meaningful changes. >> >> > >> > Actually, I'd like to load a couple ontologies (mostly TBox) and run pellet >> > inferences (classify and realize). Indeed, I was able do so in separated >> > threads... >> >> Using the same reasoner object from multiple threads could be a >> problem - I've not tried Pellet, but I met with errors on this area >> with FaCT++ and JFact, although it was a long time ago. So, YMMV on >> this - you might need a synchronized wrapper around Pelle. >> >> > >> > Then, I'd spawn some threads to get properties information, like range, >> > domain... individuals from range class, etc... (I'm translating instances >> > from one ontology to another) >> > >> > I've tried to use Pellet 2.3.2 from https://github.com/complexible/pellet >> > but there were concurrency issues... It worked sometimes... sometimes it >> > crashed or stopped... >> > >> > After searching a lot about it, I've found about this Pellet fork which >> > would be a pellet with support for OWL-API 4... >> > >> >> For the record, the current Pellet main branch has included the >> changes I wrote for that fork, so building from the main Pellet >> repository produces an equivalent artifact. >> >> > I've also found out that the thread safe version of OWL-API is in the >> > package owl-tools... (although I couldn't find the ThreadSafe* classes.... ) >> > >> >> With OWLAPI 4.0.2 and 4.1.0 (not released yet), the multithread >> functionalities in OWLAPITOOLS are merged in the main repository. >> >> > Finally, after this search, I've defined the a POM with the following >> > dependencies: >> > >> > <dependencies> >> > >> > <dependency> >> > >> > <groupId>org.apache.jena</groupId> >> > >> > <artifactId>apache-jena-libs</artifactId> >> > >> > <version>2.13.0</version> >> > >> > <type>pom</type> >> > >> > <exclusions> >> > >> > <exclusion> >> > >> > <artifactId>slf4j-log4j12</artifactId> >> > >> > <groupId>org.slf4j</groupId> >> > >> > </exclusion> >> > >> > </exclusions> >> > >> > </dependency> >> > >> > <dependency> >> > >> > <groupId>net.sourceforge.owlapi</groupId> >> > >> > <artifactId>pellet-core-ignazio1977</artifactId> >> > >> > <version>2.4.0-ignazio1977</version> >> > >> > </dependency> >> > >> > <dependency> >> > >> > <groupId>net.sourceforge.owlapi</groupId> >> > >> > <artifactId>pellet-owlapi-ignazio1977</artifactId> >> > >> > <version>2.4.0-ignazio1977</version> >> > >> > </dependency> >> > >> > <dependency> >> > >> > <groupId>net.sourceforge.owlapi</groupId> >> > >> > <artifactId>pellet-query-ignazio1977</artifactId> >> > >> > <version>2.4.0-ignazio1977</version> >> > >> > </dependency> >> > >> > <dependency> >> > >> > <groupId>net.sourceforge.owlapi</groupId> >> > >> > <artifactId>owlapi-tools</artifactId> >> > >> > <version>4.0.2</version> >> > >> > </dependency> >> > >> > </dependencies> >> > >> > >> > Now, when running the following steps: >> > >> > >> > int availableProcessors = Runtime.getRuntime().availableProcessors(); >> > >> > this.executor = Executors.newFixedThreadPool(availableProcessors); >> > >> > this.srcOWLManager = OWLManager.createOWLOntologyManager(); >> > >> > this.targetOWLManager = OWLManager.createOWLOntologyManager(); >> > >> > //Callable that load a model from jena to owl-api ontology >> > >> > Callable<OWLOntology> srcWorker = new FromJena2OWLAPI(this.srcOWLManager, >> > srcModel); >> > >> > Future<OWLOntology> srcSubmit = executor.submit(srcWorker); >> > >> > Callable<OWLOntology> tgtWorker = new FromJena2OWLAPI(this.targetOWLManager, >> > targetModel); >> > >> > Future<OWLOntology> tgtSubmit = executor.submit(tgtWorker); >> > >> > this.srcOntology = srcSubmit.get(5, TimeUnit.SECONDS); >> > >> > this.targetOntology = tgtSubmit.get(5, TimeUnit.SECONDS); >> > >> > //Until here, everything is fine... The ontologies are loaded >> > successfully... >> > >> > >> > this.pelletReasoner = >> > PelletReasonerFactory.getInstance().createReasoner(this.targetOntology); >> > >> > >> > But when creating the reasoner, I've got: >> > >> > >> > Exception in thread "main" java.lang.NoSuchMethodError: >> > org.semanticweb.owlapi.model.OWLDataMinCardinality.getProperty()Lorg/semanticweb/owlapi/model/OWLDataPropertyExpression; >> > >> >> This looks lie a problem with OWLAPI versions, there might be an older >> version hiding in the dependencies. I don't think it depends on >> multithread issues - I've never met with this sort of error when >> playing with multithread applications. >> >> >> > >> > >> > Using the previous version, I could initialize pellet, classify and >> > realize... and then pass the objects to threads: >> > >> >> I would think so. This confirms that the exception you're seeing is >> not from the multithread use but from something else. >> Can you check the exact classpath being used? Something like printing >> out the value of System.getProperty("java.class.path") should be >> enough to make sure the right jars are on the classpath. Can you post >> the result of adding that to your application? >> >> HTH, >> I. >> >> > Set<OWLNamedIndividual> individualsInSignature = >> > this.srcOntology.getIndividualsInSignature(); >> > >> > List<Future<OWLOntology>> futures = new ArrayList<Future<OWLOntology>>(); >> > >> > for ( OWLNamedIndividual owlNamedIndividual : individualsInSignature) { >> > >> > Callable<OWLOntology> worker = new IndividualMapper( >> > >> > owlNamedIndividual, >> > >> > this.srcOWLManager, >> > >> > srcOntologyIRI, >> > >> > this.pelletReasoner, >> > >> > this.targetOntology.getOntologyID().getOntologyIRI().get(), >> > >> > translatedOntologyIRI, >> > >> > this.referenceAlignment >> > >> > ); >> > >> > Future<OWLOntology> submit = this.executor.submit(worker); >> > >> > futures.add(submit); >> > >> > } >> > >> > >> > Inside IndividualMapper, I should work with owl-api and pellet to get >> > properties of individuals, and so on... >> > >> > I'd really appreciate some help!! >> > >> > Rodrigo C. Antonialli >> > ====================================== >> > Rio Claro - SP - Brasil >> > LinkedIn: http://www.linkedin.com/in/rcantonialli >> > Contato: rca...@gm... >> > Skype: rc_antonialli >> > >> > ------------------------------------------------------------------------------ >> > >> > _______________________________________________ >> > Owlapi-developer mailing list >> > Owl...@li... >> > https://lists.sourceforge.net/lists/listinfo/owlapi-developer >> > >> >> ------------------------------------------------------------------------------ >> _______________________________________________ >> Owlapi-developer mailing list >> Owl...@li... >> https://lists.sourceforge.net/lists/listinfo/owlapi-developer > > > > ------------------------------------------------------------------------------ > > _______________________________________________ > Owlapi-developer mailing list > Owl...@li... > https://lists.sourceforge.net/lists/listinfo/owlapi-developer > |
From: Graham M. <gr...@or...> - 2015-08-17 17:08:01
|
In the past I have had a lot of problems with multi-threaded access to the OWL-API (where multiple threads are sharing a reasoner). Even something as simple as getting a string representation of an OWL entity caused problems (shared buffer somewhere?). My solution was ugly but effective — create static synchronized methods that take the reasoner/ontology as parameter and then call on to the reasoner/ontology method you need. graham > On Aug 17, 2015, at 5:37 AM, Rodrigo Antonialli <rca...@gm...> wrote: > > Hi Ignazio, > > Thank you very much for your reply! > > I need to find the right version and run a simple test, because I've downloaded OWL-API 4.0.2 and Pellet (master branch from complexible/pellet <https://github.com/complexible/pellet>) and the error still remained... > > I've used different combinations of the jars, some maven configurations, but in all cases the error remained and I wasn't able to find an older version of owl-api at the classpath. > > I'll clean up everything and try again... If the error still remain, I'll post more info! > > Regarding the reasoner usage in multithread environment, let me ask: > > Suppose I've loaded an OWLOntology in the main thread, when a thread is spawned the ontology is set as a parameter (of the Callable object for example). So, inside the thread, it's referenced by a local attribute... The best approach is to create the reasoner inside the thread using this same ontology?! The inferences will be generated in the main ontology or it will be copied to each thread?! > > Regards > > Rodrigo C. Antonialli > ====================================== > Rio Claro - SP - Brasil > LinkedIn: http://www.linkedin.com/in/rcantonialli <http://www.linkedin.com/in/rcantonialli> > Contato: rca...@gm... <mailto:rca...@gm...> > Skype: rc_antonialli > > On Fri, Aug 14, 2015 at 5:31 PM, Ignazio Palmisano <ipa...@gm... <mailto:ipa...@gm...>> wrote: > On 14 August 2015 at 16:10, Rodrigo Antonialli <rca...@gm... <mailto:rca...@gm...>> wrote: > > Hi, > > > > I've being looking for a way to use OWL-API and Pellet in a multithread > > application. Is it possible?! What dependencies should I use?? > > > > The dependencies are the same for multithread versus non multithread > OWLAPI. For better multithread reliability, in OWLAPI 4.1.0 there is > an OWLManager.createConcurrentOWLOntologyManager(). However, the new > features are for updating an ontology. While reasoning without changes > to the ontology, there won't be meaningful changes. > > > > > Actually, I'd like to load a couple ontologies (mostly TBox) and run pellet > > inferences (classify and realize). Indeed, I was able do so in separated > > threads... > > Using the same reasoner object from multiple threads could be a > problem - I've not tried Pellet, but I met with errors on this area > with FaCT++ and JFact, although it was a long time ago. So, YMMV on > this - you might need a synchronized wrapper around Pelle. > > > > > Then, I'd spawn some threads to get properties information, like range, > > domain... individuals from range class, etc... (I'm translating instances > > from one ontology to another) > > > > I've tried to use Pellet 2.3.2 from https://github.com/complexible/pellet <https://github.com/complexible/pellet> > > but there were concurrency issues... It worked sometimes... sometimes it > > crashed or stopped... > > > > After searching a lot about it, I've found about this Pellet fork which > > would be a pellet with support for OWL-API 4... > > > > For the record, the current Pellet main branch has included the > changes I wrote for that fork, so building from the main Pellet > repository produces an equivalent artifact. > > > I've also found out that the thread safe version of OWL-API is in the > > package owl-tools... (although I couldn't find the ThreadSafe* classes.... ) > > > > With OWLAPI 4.0.2 and 4.1.0 (not released yet), the multithread > functionalities in OWLAPITOOLS are merged in the main repository. > > > Finally, after this search, I've defined the a POM with the following > > dependencies: > > > > <dependencies> > > > > <dependency> > > > > <groupId>org.apache.jena</groupId> > > > > <artifactId>apache-jena-libs</artifactId> > > > > <version>2.13.0</version> > > > > <type>pom</type> > > > > <exclusions> > > > > <exclusion> > > > > <artifactId>slf4j-log4j12</artifactId> > > > > <groupId>org.slf4j</groupId> > > > > </exclusion> > > > > </exclusions> > > > > </dependency> > > > > <dependency> > > > > <groupId>net.sourceforge.owlapi</groupId> > > > > <artifactId>pellet-core-ignazio1977</artifactId> > > > > <version>2.4.0-ignazio1977</version> > > > > </dependency> > > > > <dependency> > > > > <groupId>net.sourceforge.owlapi</groupId> > > > > <artifactId>pellet-owlapi-ignazio1977</artifactId> > > > > <version>2.4.0-ignazio1977</version> > > > > </dependency> > > > > <dependency> > > > > <groupId>net.sourceforge.owlapi</groupId> > > > > <artifactId>pellet-query-ignazio1977</artifactId> > > > > <version>2.4.0-ignazio1977</version> > > > > </dependency> > > > > <dependency> > > > > <groupId>net.sourceforge.owlapi</groupId> > > > > <artifactId>owlapi-tools</artifactId> > > > > <version>4.0.2</version> > > > > </dependency> > > > > </dependencies> > > > > > > Now, when running the following steps: > > > > > > int availableProcessors = Runtime.getRuntime().availableProcessors(); > > > > this.executor = Executors.newFixedThreadPool(availableProcessors); > > > > this.srcOWLManager = OWLManager.createOWLOntologyManager(); > > > > this.targetOWLManager = OWLManager.createOWLOntologyManager(); > > > > //Callable that load a model from jena to owl-api ontology > > > > Callable<OWLOntology> srcWorker = new FromJena2OWLAPI(this.srcOWLManager, > > srcModel); > > > > Future<OWLOntology> srcSubmit = executor.submit(srcWorker); > > > > Callable<OWLOntology> tgtWorker = new FromJena2OWLAPI(this.targetOWLManager, > > targetModel); > > > > Future<OWLOntology> tgtSubmit = executor.submit(tgtWorker); > > > > this.srcOntology = srcSubmit.get(5, TimeUnit.SECONDS); > > > > this.targetOntology = tgtSubmit.get(5, TimeUnit.SECONDS); > > > > //Until here, everything is fine... The ontologies are loaded > > successfully... > > > > > > this.pelletReasoner = > > PelletReasonerFactory.getInstance().createReasoner(this.targetOntology); > > > > > > But when creating the reasoner, I've got: > > > > > > Exception in thread "main" java.lang.NoSuchMethodError: > > org.semanticweb.owlapi.model.OWLDataMinCardinality.getProperty()Lorg/semanticweb/owlapi/model/OWLDataPropertyExpression; > > > > This looks lie a problem with OWLAPI versions, there might be an older > version hiding in the dependencies. I don't think it depends on > multithread issues - I've never met with this sort of error when > playing with multithread applications. > > > > > > > > Using the previous version, I could initialize pellet, classify and > > realize... and then pass the objects to threads: > > > > I would think so. This confirms that the exception you're seeing is > not from the multithread use but from something else. > Can you check the exact classpath being used? Something like printing > out the value of System.getProperty("java.class.path") should be > enough to make sure the right jars are on the classpath. Can you post > the result of adding that to your application? > > HTH, > I. > > > Set<OWLNamedIndividual> individualsInSignature = > > this.srcOntology.getIndividualsInSignature(); > > > > List<Future<OWLOntology>> futures = new ArrayList<Future<OWLOntology>>(); > > > > for ( OWLNamedIndividual owlNamedIndividual : individualsInSignature) { > > > > Callable<OWLOntology> worker = new IndividualMapper( > > > > owlNamedIndividual, > > > > this.srcOWLManager, > > > > srcOntologyIRI, > > > > this.pelletReasoner, > > > > this.targetOntology.getOntologyID().getOntologyIRI().get(), > > > > translatedOntologyIRI, > > > > this.referenceAlignment > > > > ); > > > > Future<OWLOntology> submit = this.executor.submit(worker); > > > > futures.add(submit); > > > > } > > > > > > Inside IndividualMapper, I should work with owl-api and pellet to get > > properties of individuals, and so on... > > > > I'd really appreciate some help!! > > > > Rodrigo C. Antonialli > > ====================================== > > Rio Claro - SP - Brasil > > LinkedIn: http://www.linkedin.com/in/rcantonialli <http://www.linkedin.com/in/rcantonialli> > > Contato: rca...@gm... <mailto:rca...@gm...> > > Skype: rc_antonialli > > > > ------------------------------------------------------------------------------ > > > > _______________________________________________ > > Owlapi-developer mailing list > > Owl...@li... <mailto:Owl...@li...> > > https://lists.sourceforge.net/lists/listinfo/owlapi-developer <https://lists.sourceforge.net/lists/listinfo/owlapi-developer> > > > > ------------------------------------------------------------------------------ > _______________________________________________ > Owlapi-developer mailing list > Owl...@li... <mailto:Owl...@li...> > https://lists.sourceforge.net/lists/listinfo/owlapi-developer <https://lists.sourceforge.net/lists/listinfo/owlapi-developer> > > ------------------------------------------------------------------------------ > _______________________________________________ > Owlapi-developer mailing list > Owl...@li... > https://lists.sourceforge.net/lists/listinfo/owlapi-developer ----- Graham Matthews, Ph.D. CEO OrangeDog ----- The information contained in this message (including any files transmitted with this message) may contain proprietary, trade secret or other confidential and/or legally privileged information. Any pricing information contained in this message (or in any files transmitted with this message) is confidential and cannot be shared with any third parties without prior written approval from OrangeDog. This message is intended to be read only by the individual or entity to whom it is addressed or by their designee. If the reader of this message is not the intended recipient, you are on notice that any use, disclosure, copying or distribution of this message, in any form, is strictly prohibited. If you have received this message in error, please immediately notify the sender and/or OrangeDog and destroy all copies of this message in your possession, custody or control. |
From: Ignazio P. <ipa...@gm...> - 2015-08-17 19:22:21
|
On 17 Aug 2015 19:08, "Graham Matthews" <gr...@or...> wrote: > > In the past I have had a lot of problems with multi-threaded access to the OWL-API (where multiple threads are sharing a reasoner). Even something as simple as getting a string representation of an OWL entity caused problems (shared buffer somewhere?). Gut feeling is that this could be a problem with static instances of renderers for toString() - the current solution is not very nice. However toString() of an OWLObject is way more complex than it sounds :-) It doesn't involve reasoning though, so I think it should be replicable with Owlapi code only. If you have an example of this code around, it would be useful. Cheers, I. My solution was ugly but effective — create static synchronized methods that take the reasoner/ontology as parameter and then call on to the reasoner/ontology method you need. > graham > >> On Aug 17, 2015, at 5:37 AM, Rodrigo Antonialli <rca...@gm...> wrote: >> >> Hi Ignazio, >> >> Thank you very much for your reply! >> >> I need to find the right version and run a simple test, because I've downloaded OWL-API 4.0.2 and Pellet (master branch from complexible/pellet) and the error still remained... >> >> I've used different combinations of the jars, some maven configurations, but in all cases the error remained and I wasn't able to find an older version of owl-api at the classpath. >> >> I'll clean up everything and try again... If the error still remain, I'll post more info! >> >> Regarding the reasoner usage in multithread environment, let me ask: >> >> Suppose I've loaded an OWLOntology in the main thread, when a thread is spawned the ontology is set as a parameter (of the Callable object for example). So, inside the thread, it's referenced by a local attribute... The best approach is to create the reasoner inside the thread using this same ontology?! The inferences will be generated in the main ontology or it will be copied to each thread?! >> >> Regards >> >> Rodrigo C. Antonialli >> ====================================== >> Rio Claro - SP - Brasil >> LinkedIn: http://www.linkedin.com/in/rcantonialli >> Contato: rca...@gm... >> Skype: rc_antonialli >> >> On Fri, Aug 14, 2015 at 5:31 PM, Ignazio Palmisano < ipa...@gm...> wrote: >>> >>> On 14 August 2015 at 16:10, Rodrigo Antonialli <rca...@gm...> wrote: >>> > Hi, >>> > >>> > I've being looking for a way to use OWL-API and Pellet in a multithread >>> > application. Is it possible?! What dependencies should I use?? >>> > >>> >>> The dependencies are the same for multithread versus non multithread >>> OWLAPI. For better multithread reliability, in OWLAPI 4.1.0 there is >>> an OWLManager.createConcurrentOWLOntologyManager(). However, the new >>> features are for updating an ontology. While reasoning without changes >>> to the ontology, there won't be meaningful changes. >>> >>> > >>> > Actually, I'd like to load a couple ontologies (mostly TBox) and run pellet >>> > inferences (classify and realize). Indeed, I was able do so in separated >>> > threads... >>> >>> Using the same reasoner object from multiple threads could be a >>> problem - I've not tried Pellet, but I met with errors on this area >>> with FaCT++ and JFact, although it was a long time ago. So, YMMV on >>> this - you might need a synchronized wrapper around Pelle. >>> >>> > >>> > Then, I'd spawn some threads to get properties information, like range, >>> > domain... individuals from range class, etc... (I'm translating instances >>> > from one ontology to another) >>> > >>> > I've tried to use Pellet 2.3.2 from https://github.com/complexible/pellet >>> > but there were concurrency issues... It worked sometimes... sometimes it >>> > crashed or stopped... >>> > >>> > After searching a lot about it, I've found about this Pellet fork which >>> > would be a pellet with support for OWL-API 4... >>> > >>> >>> For the record, the current Pellet main branch has included the >>> changes I wrote for that fork, so building from the main Pellet >>> repository produces an equivalent artifact. >>> >>> > I've also found out that the thread safe version of OWL-API is in the >>> > package owl-tools... (although I couldn't find the ThreadSafe* classes.... ) >>> > >>> >>> With OWLAPI 4.0.2 and 4.1.0 (not released yet), the multithread >>> functionalities in OWLAPITOOLS are merged in the main repository. >>> >>> > Finally, after this search, I've defined the a POM with the following >>> > dependencies: >>> > >>> > <dependencies> >>> > >>> > <dependency> >>> > >>> > <groupId>org.apache.jena</groupId> >>> > >>> > <artifactId>apache-jena-libs</artifactId> >>> > >>> > <version>2.13.0</version> >>> > >>> > <type>pom</type> >>> > >>> > <exclusions> >>> > >>> > <exclusion> >>> > >>> > <artifactId>slf4j-log4j12</artifactId> >>> > >>> > <groupId>org.slf4j</groupId> >>> > >>> > </exclusion> >>> > >>> > </exclusions> >>> > >>> > </dependency> >>> > >>> > <dependency> >>> > >>> > <groupId>net.sourceforge.owlapi</groupId> >>> > >>> > <artifactId>pellet-core-ignazio1977</artifactId> >>> > >>> > <version>2.4.0-ignazio1977</version> >>> > >>> > </dependency> >>> > >>> > <dependency> >>> > >>> > <groupId>net.sourceforge.owlapi</groupId> >>> > >>> > <artifactId>pellet-owlapi-ignazio1977</artifactId> >>> > >>> > <version>2.4.0-ignazio1977</version> >>> > >>> > </dependency> >>> > >>> > <dependency> >>> > >>> > <groupId>net.sourceforge.owlapi</groupId> >>> > >>> > <artifactId>pellet-query-ignazio1977</artifactId> >>> > >>> > <version>2.4.0-ignazio1977</version> >>> > >>> > </dependency> >>> > >>> > <dependency> >>> > >>> > <groupId>net.sourceforge.owlapi</groupId> >>> > >>> > <artifactId>owlapi-tools</artifactId> >>> > >>> > <version>4.0.2</version> >>> > >>> > </dependency> >>> > >>> > </dependencies> >>> > >>> > >>> > Now, when running the following steps: >>> > >>> > >>> > int availableProcessors = Runtime.getRuntime().availableProcessors(); >>> > >>> > this.executor = Executors.newFixedThreadPool(availableProcessors); >>> > >>> > this.srcOWLManager = OWLManager.createOWLOntologyManager(); >>> > >>> > this.targetOWLManager = OWLManager.createOWLOntologyManager(); >>> > >>> > //Callable that load a model from jena to owl-api ontology >>> > >>> > Callable<OWLOntology> srcWorker = new FromJena2OWLAPI(this.srcOWLManager, >>> > srcModel); >>> > >>> > Future<OWLOntology> srcSubmit = executor.submit(srcWorker); >>> > >>> > Callable<OWLOntology> tgtWorker = new FromJena2OWLAPI(this.targetOWLManager, >>> > targetModel); >>> > >>> > Future<OWLOntology> tgtSubmit = executor.submit(tgtWorker); >>> > >>> > this.srcOntology = srcSubmit.get(5, TimeUnit.SECONDS); >>> > >>> > this.targetOntology = tgtSubmit.get(5, TimeUnit.SECONDS); >>> > >>> > //Until here, everything is fine... The ontologies are loaded >>> > successfully... >>> > >>> > >>> > this.pelletReasoner = >>> > PelletReasonerFactory.getInstance().createReasoner(this.targetOntology); >>> > >>> > >>> > But when creating the reasoner, I've got: >>> > >>> > >>> > Exception in thread "main" java.lang.NoSuchMethodError: >>> > org.semanticweb.owlapi.model.OWLDataMinCardinality.getProperty()Lorg/semanticweb/owlapi/model/OWLDataPropertyExpression; >>> > >>> >>> This looks lie a problem with OWLAPI versions, there might be an older >>> version hiding in the dependencies. I don't think it depends on >>> multithread issues - I've never met with this sort of error when >>> playing with multithread applications. >>> >>> >>> > >>> > >>> > Using the previous version, I could initialize pellet, classify and >>> > realize... and then pass the objects to threads: >>> > >>> >>> I would think so. This confirms that the exception you're seeing is >>> not from the multithread use but from something else. >>> Can you check the exact classpath being used? Something like printing >>> out the value of System.getProperty("java.class.path") should be >>> enough to make sure the right jars are on the classpath. Can you post >>> the result of adding that to your application? >>> >>> HTH, >>> I. >>> >>> > Set<OWLNamedIndividual> individualsInSignature = >>> > this.srcOntology.getIndividualsInSignature(); >>> > >>> > List<Future<OWLOntology>> futures = new ArrayList<Future<OWLOntology>>(); >>> > >>> > for ( OWLNamedIndividual owlNamedIndividual : individualsInSignature) { >>> > >>> > Callable<OWLOntology> worker = new IndividualMapper( >>> > >>> > owlNamedIndividual, >>> > >>> > this.srcOWLManager, >>> > >>> > srcOntologyIRI, >>> > >>> > this.pelletReasoner, >>> > >>> > this.targetOntology.getOntologyID().getOntologyIRI().get(), >>> > >>> > translatedOntologyIRI, >>> > >>> > this.referenceAlignment >>> > >>> > ); >>> > >>> > Future<OWLOntology> submit = this.executor.submit(worker); >>> > >>> > futures.add(submit); >>> > >>> > } >>> > >>> > >>> > Inside IndividualMapper, I should work with owl-api and pellet to get >>> > properties of individuals, and so on... >>> > >>> > I'd really appreciate some help!! >>> > >>> > Rodrigo C. Antonialli >>> > ====================================== >>> > Rio Claro - SP - Brasil >>> > LinkedIn: http://www.linkedin.com/in/rcantonialli >>> > Contato: rca...@gm... >>> > Skype: rc_antonialli >>> > >>> > ------------------------------------------------------------------------------ >>> > >>> > _______________________________________________ >>> > Owlapi-developer mailing list >>> > Owl...@li... >>> > https://lists.sourceforge.net/lists/listinfo/owlapi-developer >>> > >>> >>> ------------------------------------------------------------------------------ >>> _______________________________________________ >>> Owlapi-developer mailing list >>> Owl...@li... >>> https://lists.sourceforge.net/lists/listinfo/owlapi-developer >> >> >> ------------------------------------------------------------------------------ >> _______________________________________________ >> Owlapi-developer mailing list >> Owl...@li... >> https://lists.sourceforge.net/lists/listinfo/owlapi-developer > > > ----- > Graham Matthews, Ph.D. > CEO > OrangeDog > ----- > > The information contained in this message (including any files transmitted with this message) may contain proprietary, trade secret or other confidential and/or legally privileged information. Any pricing information contained in this message (or in any files transmitted with this message) is confidential and cannot be shared with any third parties without prior written approval from OrangeDog. This message is intended to be read only by the individual or entity to whom it is addressed or by their designee. If the reader of this message is not the intended recipient, you are on notice that any use, disclosure, copying or distribution of this message, in any form, is strictly prohibited. If you have received this message in error, please immediately notify the sender and/or OrangeDog and destroy all copies of this message in your possession, custody or control. > > > > ------------------------------------------------------------------------------ > > _______________________________________________ > Owlapi-developer mailing list > Owl...@li... > https://lists.sourceforge.net/lists/listinfo/owlapi-developer > |
From: Rodrigo A. <rca...@gm...> - 2015-08-17 19:41:55
|
I couldn't find version 4.1.0-RC4 in the repository <https://search.maven.org/#search%7Cga%7C1%7Cowlapi>... maybe I'm looking at the wrong place... Anyway, I've downloaded owlapi from github (https://github.com/owlcs/owlapi) and compiled (mvn install)... When using pellet from <dependency> <groupId>net.sourceforge.owlapi</groupId> <artifactId>pellet-owlapi-ignazio1977</artifactId> <version>2.4.0-ignazio1977</version> </dependency> and the owlapi-distribution-4.1.0-RC4-SNAPSHOT.jar I've generated, the error remains... Among the jars downloaded from maven, I've noticed that it's the same jar... tried to remove the one from maven, and nothing... I'm checking now the source codes to try to find out what's going on... (just to notice: I've createad a new, clean project and checked the classpath... only one version of OWAPI)... Just saw a fix at OWLDataMinCardinality interface, adding the getProperty() method... maybe it's missing somewhere else... (although OWLDataCardinalityRestrictionImpl which is super class of OWLDataMinCardinalityImpl contains the getProperty() method...) Graham, I was thinking something like this when Ignazio said there are problems using the same reasoner for diffrerent threads... Rodrigo C. Antonialli ====================================== Rio Claro - SP - Brasil LinkedIn: http://www.linkedin.com/in/rcantonialli Contato: rca...@gm... Skype: rc_antonialli On Mon, Aug 17, 2015 at 1:50 PM, Graham Matthews < gr...@or...> wrote: > In the past I have had a lot of problems with multi-threaded access to the > OWL-API (where multiple threads are sharing a reasoner). Even something as > simple as getting a string representation of an OWL entity caused problems > (shared buffer somewhere?). My solution was ugly but effective — create > static synchronized methods that take the reasoner/ontology as parameter > and then call on to the reasoner/ontology method you need. > graham > > On Aug 17, 2015, at 5:37 AM, Rodrigo Antonialli <rca...@gm...> > wrote: > > Hi Ignazio, > > Thank you very much for your reply! > > I need to find the right version and run a simple test, because I've > downloaded OWL-API 4.0.2 and Pellet (master branch from complexible/pellet > <https://github.com/complexible/pellet>) and the error still remained... > > I've used different combinations of the jars, some maven configurations, > but in all cases the error remained and I wasn't able to find an older > version of owl-api at the classpath. > > I'll clean up everything and try again... If the error still remain, I'll > post more info! > > Regarding the reasoner usage in multithread environment, let me ask: > > Suppose I've loaded an OWLOntology in the main thread, when a thread is > spawned the ontology is set as a parameter (of the Callable object for > example). So, inside the thread, it's referenced by a local attribute... > The best approach is to create the reasoner inside the thread using this > same ontology?! The inferences will be generated in the main ontology or it > will be copied to each thread?! > > Regards > > Rodrigo C. Antonialli > ====================================== > Rio Claro - SP - Brasil > LinkedIn: http://www.linkedin.com/in/rcantonialli > Contato: rca...@gm... > Skype: rc_antonialli > > On Fri, Aug 14, 2015 at 5:31 PM, Ignazio Palmisano < > ipa...@gm...> wrote: > >> On 14 August 2015 at 16:10, Rodrigo Antonialli <rca...@gm...> >> wrote: >> > Hi, >> > >> > I've being looking for a way to use OWL-API and Pellet in a multithread >> > application. Is it possible?! What dependencies should I use?? >> > >> >> The dependencies are the same for multithread versus non multithread >> OWLAPI. For better multithread reliability, in OWLAPI 4.1.0 there is >> an OWLManager.createConcurrentOWLOntologyManager(). However, the new >> features are for updating an ontology. While reasoning without changes >> to the ontology, there won't be meaningful changes. >> >> > >> > Actually, I'd like to load a couple ontologies (mostly TBox) and run >> pellet >> > inferences (classify and realize). Indeed, I was able do so in separated >> > threads... >> >> Using the same reasoner object from multiple threads could be a >> problem - I've not tried Pellet, but I met with errors on this area >> with FaCT++ and JFact, although it was a long time ago. So, YMMV on >> this - you might need a synchronized wrapper around Pelle. >> >> > >> > Then, I'd spawn some threads to get properties information, like range, >> > domain... individuals from range class, etc... (I'm translating >> instances >> > from one ontology to another) >> > >> > I've tried to use Pellet 2.3.2 from >> https://github.com/complexible/pellet >> > but there were concurrency issues... It worked sometimes... sometimes it >> > crashed or stopped... >> > >> > After searching a lot about it, I've found about this Pellet fork which >> > would be a pellet with support for OWL-API 4... >> > >> >> For the record, the current Pellet main branch has included the >> changes I wrote for that fork, so building from the main Pellet >> repository produces an equivalent artifact. >> >> > I've also found out that the thread safe version of OWL-API is in the >> > package owl-tools... (although I couldn't find the ThreadSafe* >> classes.... ) >> > >> >> With OWLAPI 4.0.2 and 4.1.0 (not released yet), the multithread >> functionalities in OWLAPITOOLS are merged in the main repository. >> >> > Finally, after this search, I've defined the a POM with the following >> > dependencies: >> > >> > <dependencies> >> > >> > <dependency> >> > >> > <groupId>org.apache.jena</groupId> >> > >> > <artifactId>apache-jena-libs</artifactId> >> > >> > <version>2.13.0</version> >> > >> > <type>pom</type> >> > >> > <exclusions> >> > >> > <exclusion> >> > >> > <artifactId>slf4j-log4j12</artifactId> >> > >> > <groupId>org.slf4j</groupId> >> > >> > </exclusion> >> > >> > </exclusions> >> > >> > </dependency> >> > >> > <dependency> >> > >> > <groupId>net.sourceforge.owlapi</groupId> >> > >> > <artifactId>pellet-core-ignazio1977</artifactId> >> > >> > <version>2.4.0-ignazio1977</version> >> > >> > </dependency> >> > >> > <dependency> >> > >> > <groupId>net.sourceforge.owlapi</groupId> >> > >> > <artifactId>pellet-owlapi-ignazio1977</artifactId> >> > >> > <version>2.4.0-ignazio1977</version> >> > >> > </dependency> >> > >> > <dependency> >> > >> > <groupId>net.sourceforge.owlapi</groupId> >> > >> > <artifactId>pellet-query-ignazio1977</artifactId> >> > >> > <version>2.4.0-ignazio1977</version> >> > >> > </dependency> >> > >> > <dependency> >> > >> > <groupId>net.sourceforge.owlapi</groupId> >> > >> > <artifactId>owlapi-tools</artifactId> >> > >> > <version>4.0.2</version> >> > >> > </dependency> >> > >> > </dependencies> >> > >> > >> > Now, when running the following steps: >> > >> > >> > int availableProcessors = Runtime.getRuntime().availableProcessors(); >> > >> > this.executor = Executors.newFixedThreadPool(availableProcessors); >> > >> > this.srcOWLManager = OWLManager.createOWLOntologyManager(); >> > >> > this.targetOWLManager = OWLManager.createOWLOntologyManager(); >> > >> > //Callable that load a model from jena to owl-api ontology >> > >> > Callable<OWLOntology> srcWorker = new >> FromJena2OWLAPI(this.srcOWLManager, >> > srcModel); >> > >> > Future<OWLOntology> srcSubmit = executor.submit(srcWorker); >> > >> > Callable<OWLOntology> tgtWorker = new >> FromJena2OWLAPI(this.targetOWLManager, >> > targetModel); >> > >> > Future<OWLOntology> tgtSubmit = executor.submit(tgtWorker); >> > >> > this.srcOntology = srcSubmit.get(5, TimeUnit.SECONDS); >> > >> > this.targetOntology = tgtSubmit.get(5, TimeUnit.SECONDS); >> > >> > //Until here, everything is fine... The ontologies are loaded >> > successfully... >> > >> > >> > this.pelletReasoner = >> > PelletReasonerFactory.getInstance().createReasoner(this.targetOntology); >> > >> > >> > But when creating the reasoner, I've got: >> > >> > >> > Exception in thread "main" java.lang.NoSuchMethodError: >> > >> org.semanticweb.owlapi.model.OWLDataMinCardinality.getProperty()Lorg/semanticweb/owlapi/model/OWLDataPropertyExpression; >> > >> >> This looks lie a problem with OWLAPI versions, there might be an older >> version hiding in the dependencies. I don't think it depends on >> multithread issues - I've never met with this sort of error when >> playing with multithread applications. >> >> >> > >> > >> > Using the previous version, I could initialize pellet, classify and >> > realize... and then pass the objects to threads: >> > >> >> I would think so. This confirms that the exception you're seeing is >> not from the multithread use but from something else. >> Can you check the exact classpath being used? Something like printing >> out the value of System.getProperty("java.class.path") should be >> enough to make sure the right jars are on the classpath. Can you post >> the result of adding that to your application? >> >> HTH, >> I. >> >> > Set<OWLNamedIndividual> individualsInSignature = >> > this.srcOntology.getIndividualsInSignature(); >> > >> > List<Future<OWLOntology>> futures = new >> ArrayList<Future<OWLOntology>>(); >> > >> > for ( OWLNamedIndividual owlNamedIndividual : individualsInSignature) { >> > >> > Callable<OWLOntology> worker = new IndividualMapper( >> > >> > owlNamedIndividual, >> > >> > this.srcOWLManager, >> > >> > srcOntologyIRI, >> > >> > this.pelletReasoner, >> > >> > this.targetOntology.getOntologyID().getOntologyIRI().get(), >> > >> > translatedOntologyIRI, >> > >> > this.referenceAlignment >> > >> > ); >> > >> > Future<OWLOntology> submit = this.executor.submit(worker); >> > >> > futures.add(submit); >> > >> > } >> > >> > >> > Inside IndividualMapper, I should work with owl-api and pellet to get >> > properties of individuals, and so on... >> > >> > I'd really appreciate some help!! >> > >> > Rodrigo C. Antonialli >> > ====================================== >> > Rio Claro - SP - Brasil >> > LinkedIn: http://www.linkedin.com/in/rcantonialli >> > Contato: rca...@gm... >> > Skype: rc_antonialli >> > >> > >> ------------------------------------------------------------------------------ >> > >> > _______________________________________________ >> > Owlapi-developer mailing list >> > Owl...@li... >> > https://lists.sourceforge.net/lists/listinfo/owlapi-developer >> > >> >> >> ------------------------------------------------------------------------------ >> _______________________________________________ >> Owlapi-developer mailing list >> Owl...@li... >> https://lists.sourceforge.net/lists/listinfo/owlapi-developer >> > > > ------------------------------------------------------------------------------ > _______________________________________________ > Owlapi-developer mailing list > Owl...@li... > https://lists.sourceforge.net/lists/listinfo/owlapi-developer > > > ----- > Graham Matthews, Ph.D. > CEO > OrangeDog > ----- > > The information contained in this message (including any files transmitted > with this message) may contain proprietary, trade secret or other > confidential and/or legally privileged information. Any pricing information > contained in this message (or in any files transmitted with this message) > is confidential and cannot be shared with any third parties without prior > written approval from OrangeDog. This message is intended to be read only > by the individual or entity to whom it is addressed or by their designee. > If the reader of this message is not the intended recipient, you are on > notice that any use, disclosure, copying or distribution of this message, > in any form, is strictly prohibited. If you have received this message in > error, please immediately notify the sender and/or OrangeDog and destroy > all copies of this message in your possession, custody or control. > > > > > ------------------------------------------------------------------------------ > > _______________________________________________ > Owlapi-developer mailing list > Owl...@li... > https://lists.sourceforge.net/lists/listinfo/owlapi-developer > > |
From: Rodrigo A. <rca...@gm...> - 2015-08-18 05:56:17
|
I think there's something wrong with version 4+ of owlapi... but I wasn't able to find what it is.... When using version 4.0.2 or any other 4+ (including 4.1.0-RC2), there are a lot of exceptions like these (they vary depending the version): Exception in thread "main" java.lang.NoSuchMethodError: org.semanticweb.owlapi.model.PrefixManager.setPrefix(Ljava/lang/String;Ljava/lang/String;)V The strange is that this method is present at PrefixManager interface: void setPrefix(@Nonnull String prefixName, @Nonnull String prefix); This new error occurs in a simple test I've built to check the versions... without pelelt!! I really don't know why, at runtime, this exception is thrown... Eclipse can even suggest the method to be used... the same thing with the previous error regarding pellet... Does anybody else had issues like these?! Maybe there's something wrong with my environment (although, when downgrading to version 3.5.2, everything works fine!) Regards Rodrigo C. Antonialli ====================================== Rio Claro - SP - Brasil LinkedIn: http://www.linkedin.com/in/rcantonialli Contato: rca...@gm... Skype: rc_antonialli On Mon, Aug 17, 2015 at 4:41 PM, Rodrigo Antonialli <rca...@gm...> wrote: > I couldn't find version 4.1.0-RC4 in the repository > <https://search.maven.org/#search%7Cga%7C1%7Cowlapi>... maybe I'm looking > at the wrong place... > > Anyway, I've downloaded owlapi from github ( > https://github.com/owlcs/owlapi) and compiled (mvn install)... > > When using pellet from > > <dependency> > <groupId>net.sourceforge.owlapi</groupId> > <artifactId>pellet-owlapi-ignazio1977</artifactId> > <version>2.4.0-ignazio1977</version> > </dependency> > > and the owlapi-distribution-4.1.0-RC4-SNAPSHOT.jar I've generated, the > error remains... > > Among the jars downloaded from maven, I've noticed that it's the same > jar... tried to remove the one from maven, and nothing... > > I'm checking now the source codes to try to find out what's going on... > (just to notice: I've createad a new, clean project and checked the > classpath... only one version of OWAPI)... > > Just saw a fix at OWLDataMinCardinality interface, adding the > getProperty() method... maybe it's missing somewhere else... (although > OWLDataCardinalityRestrictionImpl which is super class of > OWLDataMinCardinalityImpl contains the getProperty() method...) > > Graham, I was thinking something like this when Ignazio said there are > problems using the same reasoner for diffrerent threads... > > > > > Rodrigo C. Antonialli > ====================================== > Rio Claro - SP - Brasil > LinkedIn: http://www.linkedin.com/in/rcantonialli > Contato: rca...@gm... > Skype: rc_antonialli > > On Mon, Aug 17, 2015 at 1:50 PM, Graham Matthews < > gr...@or...> wrote: > >> In the past I have had a lot of problems with multi-threaded access to >> the OWL-API (where multiple threads are sharing a reasoner). Even something >> as simple as getting a string representation of an OWL entity caused >> problems (shared buffer somewhere?). My solution was ugly but effective — >> create static synchronized methods that take the reasoner/ontology as >> parameter and then call on to the reasoner/ontology method you need. >> graham >> >> On Aug 17, 2015, at 5:37 AM, Rodrigo Antonialli <rca...@gm...> >> wrote: >> >> Hi Ignazio, >> >> Thank you very much for your reply! >> >> I need to find the right version and run a simple test, because I've >> downloaded OWL-API 4.0.2 and Pellet (master branch from >> complexible/pellet <https://github.com/complexible/pellet>) and the >> error still remained... >> >> I've used different combinations of the jars, some maven configurations, >> but in all cases the error remained and I wasn't able to find an older >> version of owl-api at the classpath. >> >> I'll clean up everything and try again... If the error still remain, I'll >> post more info! >> >> Regarding the reasoner usage in multithread environment, let me ask: >> >> Suppose I've loaded an OWLOntology in the main thread, when a thread is >> spawned the ontology is set as a parameter (of the Callable object for >> example). So, inside the thread, it's referenced by a local attribute... >> The best approach is to create the reasoner inside the thread using this >> same ontology?! The inferences will be generated in the main ontology or it >> will be copied to each thread?! >> >> Regards >> >> Rodrigo C. Antonialli >> ====================================== >> Rio Claro - SP - Brasil >> LinkedIn: http://www.linkedin.com/in/rcantonialli >> Contato: rca...@gm... >> Skype: rc_antonialli >> >> On Fri, Aug 14, 2015 at 5:31 PM, Ignazio Palmisano < >> ipa...@gm...> wrote: >> >>> On 14 August 2015 at 16:10, Rodrigo Antonialli <rca...@gm...> >>> wrote: >>> > Hi, >>> > >>> > I've being looking for a way to use OWL-API and Pellet in a multithread >>> > application. Is it possible?! What dependencies should I use?? >>> > >>> >>> The dependencies are the same for multithread versus non multithread >>> OWLAPI. For better multithread reliability, in OWLAPI 4.1.0 there is >>> an OWLManager.createConcurrentOWLOntologyManager(). However, the new >>> features are for updating an ontology. While reasoning without changes >>> to the ontology, there won't be meaningful changes. >>> >>> > >>> > Actually, I'd like to load a couple ontologies (mostly TBox) and run >>> pellet >>> > inferences (classify and realize). Indeed, I was able do so in >>> separated >>> > threads... >>> >>> Using the same reasoner object from multiple threads could be a >>> problem - I've not tried Pellet, but I met with errors on this area >>> with FaCT++ and JFact, although it was a long time ago. So, YMMV on >>> this - you might need a synchronized wrapper around Pelle. >>> >>> > >>> > Then, I'd spawn some threads to get properties information, like range, >>> > domain... individuals from range class, etc... (I'm translating >>> instances >>> > from one ontology to another) >>> > >>> > I've tried to use Pellet 2.3.2 from >>> https://github.com/complexible/pellet >>> > but there were concurrency issues... It worked sometimes... sometimes >>> it >>> > crashed or stopped... >>> > >>> > After searching a lot about it, I've found about this Pellet fork which >>> > would be a pellet with support for OWL-API 4... >>> > >>> >>> For the record, the current Pellet main branch has included the >>> changes I wrote for that fork, so building from the main Pellet >>> repository produces an equivalent artifact. >>> >>> > I've also found out that the thread safe version of OWL-API is in the >>> > package owl-tools... (although I couldn't find the ThreadSafe* >>> classes.... ) >>> > >>> >>> With OWLAPI 4.0.2 and 4.1.0 (not released yet), the multithread >>> functionalities in OWLAPITOOLS are merged in the main repository. >>> >>> > Finally, after this search, I've defined the a POM with the following >>> > dependencies: >>> > >>> > <dependencies> >>> > >>> > <dependency> >>> > >>> > <groupId>org.apache.jena</groupId> >>> > >>> > <artifactId>apache-jena-libs</artifactId> >>> > >>> > <version>2.13.0</version> >>> > >>> > <type>pom</type> >>> > >>> > <exclusions> >>> > >>> > <exclusion> >>> > >>> > <artifactId>slf4j-log4j12</artifactId> >>> > >>> > <groupId>org.slf4j</groupId> >>> > >>> > </exclusion> >>> > >>> > </exclusions> >>> > >>> > </dependency> >>> > >>> > <dependency> >>> > >>> > <groupId>net.sourceforge.owlapi</groupId> >>> > >>> > <artifactId>pellet-core-ignazio1977</artifactId> >>> > >>> > <version>2.4.0-ignazio1977</version> >>> > >>> > </dependency> >>> > >>> > <dependency> >>> > >>> > <groupId>net.sourceforge.owlapi</groupId> >>> > >>> > <artifactId>pellet-owlapi-ignazio1977</artifactId> >>> > >>> > <version>2.4.0-ignazio1977</version> >>> > >>> > </dependency> >>> > >>> > <dependency> >>> > >>> > <groupId>net.sourceforge.owlapi</groupId> >>> > >>> > <artifactId>pellet-query-ignazio1977</artifactId> >>> > >>> > <version>2.4.0-ignazio1977</version> >>> > >>> > </dependency> >>> > >>> > <dependency> >>> > >>> > <groupId>net.sourceforge.owlapi</groupId> >>> > >>> > <artifactId>owlapi-tools</artifactId> >>> > >>> > <version>4.0.2</version> >>> > >>> > </dependency> >>> > >>> > </dependencies> >>> > >>> > >>> > Now, when running the following steps: >>> > >>> > >>> > int availableProcessors = Runtime.getRuntime().availableProcessors(); >>> > >>> > this.executor = Executors.newFixedThreadPool(availableProcessors); >>> > >>> > this.srcOWLManager = OWLManager.createOWLOntologyManager(); >>> > >>> > this.targetOWLManager = OWLManager.createOWLOntologyManager(); >>> > >>> > //Callable that load a model from jena to owl-api ontology >>> > >>> > Callable<OWLOntology> srcWorker = new >>> FromJena2OWLAPI(this.srcOWLManager, >>> > srcModel); >>> > >>> > Future<OWLOntology> srcSubmit = executor.submit(srcWorker); >>> > >>> > Callable<OWLOntology> tgtWorker = new >>> FromJena2OWLAPI(this.targetOWLManager, >>> > targetModel); >>> > >>> > Future<OWLOntology> tgtSubmit = executor.submit(tgtWorker); >>> > >>> > this.srcOntology = srcSubmit.get(5, TimeUnit.SECONDS); >>> > >>> > this.targetOntology = tgtSubmit.get(5, TimeUnit.SECONDS); >>> > >>> > //Until here, everything is fine... The ontologies are loaded >>> > successfully... >>> > >>> > >>> > this.pelletReasoner = >>> > >>> PelletReasonerFactory.getInstance().createReasoner(this.targetOntology); >>> > >>> > >>> > But when creating the reasoner, I've got: >>> > >>> > >>> > Exception in thread "main" java.lang.NoSuchMethodError: >>> > >>> org.semanticweb.owlapi.model.OWLDataMinCardinality.getProperty()Lorg/semanticweb/owlapi/model/OWLDataPropertyExpression; >>> > >>> >>> This looks lie a problem with OWLAPI versions, there might be an older >>> version hiding in the dependencies. I don't think it depends on >>> multithread issues - I've never met with this sort of error when >>> playing with multithread applications. >>> >>> >>> > >>> > >>> > Using the previous version, I could initialize pellet, classify and >>> > realize... and then pass the objects to threads: >>> > >>> >>> I would think so. This confirms that the exception you're seeing is >>> not from the multithread use but from something else. >>> Can you check the exact classpath being used? Something like printing >>> out the value of System.getProperty("java.class.path") should be >>> enough to make sure the right jars are on the classpath. Can you post >>> the result of adding that to your application? >>> >>> HTH, >>> I. >>> >>> > Set<OWLNamedIndividual> individualsInSignature = >>> > this.srcOntology.getIndividualsInSignature(); >>> > >>> > List<Future<OWLOntology>> futures = new >>> ArrayList<Future<OWLOntology>>(); >>> > >>> > for ( OWLNamedIndividual owlNamedIndividual : individualsInSignature) { >>> > >>> > Callable<OWLOntology> worker = new IndividualMapper( >>> > >>> > owlNamedIndividual, >>> > >>> > this.srcOWLManager, >>> > >>> > srcOntologyIRI, >>> > >>> > this.pelletReasoner, >>> > >>> > this.targetOntology.getOntologyID().getOntologyIRI().get(), >>> > >>> > translatedOntologyIRI, >>> > >>> > this.referenceAlignment >>> > >>> > ); >>> > >>> > Future<OWLOntology> submit = this.executor.submit(worker); >>> > >>> > futures.add(submit); >>> > >>> > } >>> > >>> > >>> > Inside IndividualMapper, I should work with owl-api and pellet to get >>> > properties of individuals, and so on... >>> > >>> > I'd really appreciate some help!! >>> > >>> > Rodrigo C. Antonialli >>> > ====================================== >>> > Rio Claro - SP - Brasil >>> > LinkedIn: http://www.linkedin.com/in/rcantonialli >>> > Contato: rca...@gm... >>> > Skype: rc_antonialli >>> > >>> > >>> ------------------------------------------------------------------------------ >>> > >>> > _______________________________________________ >>> > Owlapi-developer mailing list >>> > Owl...@li... >>> > https://lists.sourceforge.net/lists/listinfo/owlapi-developer >>> > >>> >>> >>> ------------------------------------------------------------------------------ >>> _______________________________________________ >>> Owlapi-developer mailing list >>> Owl...@li... >>> https://lists.sourceforge.net/lists/listinfo/owlapi-developer >>> >> >> >> ------------------------------------------------------------------------------ >> _______________________________________________ >> Owlapi-developer mailing list >> Owl...@li... >> https://lists.sourceforge.net/lists/listinfo/owlapi-developer >> >> >> ----- >> Graham Matthews, Ph.D. >> CEO >> OrangeDog >> ----- >> >> The information contained in this message (including any files >> transmitted with this message) may contain proprietary, trade secret or >> other confidential and/or legally privileged information. Any pricing >> information contained in this message (or in any files transmitted with >> this message) is confidential and cannot be shared with any third parties >> without prior written approval from OrangeDog. This message is intended to >> be read only by the individual or entity to whom it is addressed or by >> their designee. If the reader of this message is not the >> intended recipient, you are on notice that any use, disclosure, copying or >> distribution of this message, in any form, is strictly prohibited. If you >> have received this message in error, please immediately notify the sender >> and/or OrangeDog and destroy all copies of this message in your possession, >> custody or control. >> >> >> >> >> ------------------------------------------------------------------------------ >> >> _______________________________________________ >> Owlapi-developer mailing list >> Owl...@li... >> https://lists.sourceforge.net/lists/listinfo/owlapi-developer >> >> > |
From: Ignazio P. <ipa...@gm...> - 2015-08-18 06:29:00
|
On 18 Aug 2015 07:57, "Rodrigo Antonialli" <rca...@gm...> wrote: > > I think there's something wrong with version 4+ of owlapi... but I wasn't able to find what it is.... > > When using version 4.0.2 or any other 4+ (including 4.1.0-RC2), there are a lot of exceptions like these (they vary depending the version): > > Exception in thread "main" java.lang.NoSuchMethodError: org.semanticweb.owlapi.model.PrefixManager.setPrefix(Ljava/lang/String;Ljava/lang/String;)V > > The strange is that this method is present at PrefixManager interface: > > void setPrefix(@Nonnull String prefixName, @Nonnull String prefix); > > This new error occurs in a simple test I've built to check the versions... without pelelt!! > Can you share the test? Which version of Java are you using? I. > I really don't know why, at runtime, this exception is thrown... Eclipse can even suggest the method to be used... the same thing with the previous error regarding pellet... > > Does anybody else had issues like these?! Maybe there's something wrong with my environment (although, when downgrading to version 3.5.2, everything works fine!) > > Regards > > > > > Rodrigo C. Antonialli > ====================================== > Rio Claro - SP - Brasil > LinkedIn: http://www.linkedin.com/in/rcantonialli > Contato: rca...@gm... > Skype: rc_antonialli > > On Mon, Aug 17, 2015 at 4:41 PM, Rodrigo Antonialli < rca...@gm...> wrote: >> >> I couldn't find version 4.1.0-RC4 in the repository... maybe I'm looking at the wrong place... >> >> Anyway, I've downloaded owlapi from github ( https://github.com/owlcs/owlapi) and compiled (mvn install)... >> >> When using pellet from >> >> <dependency> >> <groupId>net.sourceforge.owlapi</groupId> >> <artifactId>pellet-owlapi-ignazio1977</artifactId> >> <version>2.4.0-ignazio1977</version> >> </dependency> >> >> and the owlapi-distribution-4.1.0-RC4-SNAPSHOT.jar I've generated, the error remains... >> >> Among the jars downloaded from maven, I've noticed that it's the same jar... tried to remove the one from maven, and nothing... >> >> I'm checking now the source codes to try to find out what's going on... (just to notice: I've createad a new, clean project and checked the classpath... only one version of OWAPI)... >> >> Just saw a fix at OWLDataMinCardinality interface, adding the getProperty() method... maybe it's missing somewhere else... (although OWLDataCardinalityRestrictionImpl which is super class of OWLDataMinCardinalityImpl contains the getProperty() method...) >> >> Graham, I was thinking something like this when Ignazio said there are problems using the same reasoner for diffrerent threads... >> >> >> >> >> Rodrigo C. Antonialli >> ====================================== >> Rio Claro - SP - Brasil >> LinkedIn: http://www.linkedin.com/in/rcantonialli >> Contato: rca...@gm... >> Skype: rc_antonialli >> >> On Mon, Aug 17, 2015 at 1:50 PM, Graham Matthews < gr...@or...> wrote: >>> >>> In the past I have had a lot of problems with multi-threaded access to the OWL-API (where multiple threads are sharing a reasoner). Even something as simple as getting a string representation of an OWL entity caused problems (shared buffer somewhere?). My solution was ugly but effective — create static synchronized methods that take the reasoner/ontology as parameter and then call on to the reasoner/ontology method you need. >>> graham >>> >>>> On Aug 17, 2015, at 5:37 AM, Rodrigo Antonialli <rca...@gm...> wrote: >>>> >>>> Hi Ignazio, >>>> >>>> Thank you very much for your reply! >>>> >>>> I need to find the right version and run a simple test, because I've downloaded OWL-API 4.0.2 and Pellet (master branch from complexible/pellet) and the error still remained... >>>> >>>> I've used different combinations of the jars, some maven configurations, but in all cases the error remained and I wasn't able to find an older version of owl-api at the classpath. >>>> >>>> I'll clean up everything and try again... If the error still remain, I'll post more info! >>>> >>>> Regarding the reasoner usage in multithread environment, let me ask: >>>> >>>> Suppose I've loaded an OWLOntology in the main thread, when a thread is spawned the ontology is set as a parameter (of the Callable object for example). So, inside the thread, it's referenced by a local attribute... The best approach is to create the reasoner inside the thread using this same ontology?! The inferences will be generated in the main ontology or it will be copied to each thread?! >>>> >>>> Regards >>>> >>>> Rodrigo C. Antonialli >>>> ====================================== >>>> Rio Claro - SP - Brasil >>>> LinkedIn: http://www.linkedin.com/in/rcantonialli >>>> Contato: rca...@gm... >>>> Skype: rc_antonialli >>>> >>>> On Fri, Aug 14, 2015 at 5:31 PM, Ignazio Palmisano < ipa...@gm...> wrote: >>>>> >>>>> On 14 August 2015 at 16:10, Rodrigo Antonialli <rca...@gm...> wrote: >>>>> > Hi, >>>>> > >>>>> > I've being looking for a way to use OWL-API and Pellet in a multithread >>>>> > application. Is it possible?! What dependencies should I use?? >>>>> > >>>>> >>>>> The dependencies are the same for multithread versus non multithread >>>>> OWLAPI. For better multithread reliability, in OWLAPI 4.1.0 there is >>>>> an OWLManager.createConcurrentOWLOntologyManager(). However, the new >>>>> features are for updating an ontology. While reasoning without changes >>>>> to the ontology, there won't be meaningful changes. >>>>> >>>>> > >>>>> > Actually, I'd like to load a couple ontologies (mostly TBox) and run pellet >>>>> > inferences (classify and realize). Indeed, I was able do so in separated >>>>> > threads... >>>>> >>>>> Using the same reasoner object from multiple threads could be a >>>>> problem - I've not tried Pellet, but I met with errors on this area >>>>> with FaCT++ and JFact, although it was a long time ago. So, YMMV on >>>>> this - you might need a synchronized wrapper around Pelle. >>>>> >>>>> > >>>>> > Then, I'd spawn some threads to get properties information, like range, >>>>> > domain... individuals from range class, etc... (I'm translating instances >>>>> > from one ontology to another) >>>>> > >>>>> > I've tried to use Pellet 2.3.2 from https://github.com/complexible/pellet >>>>> > but there were concurrency issues... It worked sometimes... sometimes it >>>>> > crashed or stopped... >>>>> > >>>>> > After searching a lot about it, I've found about this Pellet fork which >>>>> > would be a pellet with support for OWL-API 4... >>>>> > >>>>> >>>>> For the record, the current Pellet main branch has included the >>>>> changes I wrote for that fork, so building from the main Pellet >>>>> repository produces an equivalent artifact. >>>>> >>>>> > I've also found out that the thread safe version of OWL-API is in the >>>>> > package owl-tools... (although I couldn't find the ThreadSafe* classes.... ) >>>>> > >>>>> >>>>> With OWLAPI 4.0.2 and 4.1.0 (not released yet), the multithread >>>>> functionalities in OWLAPITOOLS are merged in the main repository. >>>>> >>>>> > Finally, after this search, I've defined the a POM with the following >>>>> > dependencies: >>>>> > >>>>> > <dependencies> >>>>> > >>>>> > <dependency> >>>>> > >>>>> > <groupId>org.apache.jena</groupId> >>>>> > >>>>> > <artifactId>apache-jena-libs</artifactId> >>>>> > >>>>> > <version>2.13.0</version> >>>>> > >>>>> > <type>pom</type> >>>>> > >>>>> > <exclusions> >>>>> > >>>>> > <exclusion> >>>>> > >>>>> > <artifactId>slf4j-log4j12</artifactId> >>>>> > >>>>> > <groupId>org.slf4j</groupId> >>>>> > >>>>> > </exclusion> >>>>> > >>>>> > </exclusions> >>>>> > >>>>> > </dependency> >>>>> > >>>>> > <dependency> >>>>> > >>>>> > <groupId>net.sourceforge.owlapi</groupId> >>>>> > >>>>> > <artifactId>pellet-core-ignazio1977</artifactId> >>>>> > >>>>> > <version>2.4.0-ignazio1977</version> >>>>> > >>>>> > </dependency> >>>>> > >>>>> > <dependency> >>>>> > >>>>> > <groupId>net.sourceforge.owlapi</groupId> >>>>> > >>>>> > <artifactId>pellet-owlapi-ignazio1977</artifactId> >>>>> > >>>>> > <version>2.4.0-ignazio1977</version> >>>>> > >>>>> > </dependency> >>>>> > >>>>> > <dependency> >>>>> > >>>>> > <groupId>net.sourceforge.owlapi</groupId> >>>>> > >>>>> > <artifactId>pellet-query-ignazio1977</artifactId> >>>>> > >>>>> > <version>2.4.0-ignazio1977</version> >>>>> > >>>>> > </dependency> >>>>> > >>>>> > <dependency> >>>>> > >>>>> > <groupId>net.sourceforge.owlapi</groupId> >>>>> > >>>>> > <artifactId>owlapi-tools</artifactId> >>>>> > >>>>> > <version>4.0.2</version> >>>>> > >>>>> > </dependency> >>>>> > >>>>> > </dependencies> >>>>> > >>>>> > >>>>> > Now, when running the following steps: >>>>> > >>>>> > >>>>> > int availableProcessors = Runtime.getRuntime().availableProcessors(); >>>>> > >>>>> > this.executor = Executors.newFixedThreadPool(availableProcessors); >>>>> > >>>>> > this.srcOWLManager = OWLManager.createOWLOntologyManager(); >>>>> > >>>>> > this.targetOWLManager = OWLManager.createOWLOntologyManager(); >>>>> > >>>>> > //Callable that load a model from jena to owl-api ontology >>>>> > >>>>> > Callable<OWLOntology> srcWorker = new FromJena2OWLAPI(this.srcOWLManager, >>>>> > srcModel); >>>>> > >>>>> > Future<OWLOntology> srcSubmit = executor.submit(srcWorker); >>>>> > >>>>> > Callable<OWLOntology> tgtWorker = new FromJena2OWLAPI(this.targetOWLManager, >>>>> > targetModel); >>>>> > >>>>> > Future<OWLOntology> tgtSubmit = executor.submit(tgtWorker); >>>>> > >>>>> > this.srcOntology = srcSubmit.get(5, TimeUnit.SECONDS); >>>>> > >>>>> > this.targetOntology = tgtSubmit.get(5, TimeUnit.SECONDS); >>>>> > >>>>> > //Until here, everything is fine... The ontologies are loaded >>>>> > successfully... >>>>> > >>>>> > >>>>> > this.pelletReasoner = >>>>> > PelletReasonerFactory.getInstance().createReasoner(this.targetOntology); >>>>> > >>>>> > >>>>> > But when creating the reasoner, I've got: >>>>> > >>>>> > >>>>> > Exception in thread "main" java.lang.NoSuchMethodError: >>>>> > org.semanticweb.owlapi.model.OWLDataMinCardinality.getProperty()Lorg/semanticweb/owlapi/model/OWLDataPropertyExpression; >>>>> > >>>>> >>>>> This looks lie a problem with OWLAPI versions, there might be an older >>>>> version hiding in the dependencies. I don't think it depends on >>>>> multithread issues - I've never met with this sort of error when >>>>> playing with multithread applications. >>>>> >>>>> >>>>> > >>>>> > >>>>> > Using the previous version, I could initialize pellet, classify and >>>>> > realize... and then pass the objects to threads: >>>>> > >>>>> >>>>> I would think so. This confirms that the exception you're seeing is >>>>> not from the multithread use but from something else. >>>>> Can you check the exact classpath being used? Something like printing >>>>> out the value of System.getProperty("java.class.path") should be >>>>> enough to make sure the right jars are on the classpath. Can you post >>>>> the result of adding that to your application? >>>>> >>>>> HTH, >>>>> I. >>>>> >>>>> > Set<OWLNamedIndividual> individualsInSignature = >>>>> > this.srcOntology.getIndividualsInSignature(); >>>>> > >>>>> > List<Future<OWLOntology>> futures = new ArrayList<Future<OWLOntology>>(); >>>>> > >>>>> > for ( OWLNamedIndividual owlNamedIndividual : individualsInSignature) { >>>>> > >>>>> > Callable<OWLOntology> worker = new IndividualMapper( >>>>> > >>>>> > owlNamedIndividual, >>>>> > >>>>> > this.srcOWLManager, >>>>> > >>>>> > srcOntologyIRI, >>>>> > >>>>> > this.pelletReasoner, >>>>> > >>>>> > this.targetOntology.getOntologyID().getOntologyIRI().get(), >>>>> > >>>>> > translatedOntologyIRI, >>>>> > >>>>> > this.referenceAlignment >>>>> > >>>>> > ); >>>>> > >>>>> > Future<OWLOntology> submit = this.executor.submit(worker); >>>>> > >>>>> > futures.add(submit); >>>>> > >>>>> > } >>>>> > >>>>> > >>>>> > Inside IndividualMapper, I should work with owl-api and pellet to get >>>>> > properties of individuals, and so on... >>>>> > >>>>> > I'd really appreciate some help!! >>>>> > >>>>> > Rodrigo C. Antonialli >>>>> > ====================================== >>>>> > Rio Claro - SP - Brasil >>>>> > LinkedIn: http://www.linkedin.com/in/rcantonialli >>>>> > Contato: rca...@gm... >>>>> > Skype: rc_antonialli >>>>> > >>>>> > ------------------------------------------------------------------------------ >>>>> > >>>>> > _______________________________________________ >>>>> > Owlapi-developer mailing list >>>>> > Owl...@li... >>>>> > https://lists.sourceforge.net/lists/listinfo/owlapi-developer >>>>> > >>>>> >>>>> ------------------------------------------------------------------------------ >>>>> _______________________________________________ >>>>> Owlapi-developer mailing list >>>>> Owl...@li... >>>>> https://lists.sourceforge.net/lists/listinfo/owlapi-developer >>>> >>>> >>>> ------------------------------------------------------------------------------ >>>> _______________________________________________ >>>> Owlapi-developer mailing list >>>> Owl...@li... >>>> https://lists.sourceforge.net/lists/listinfo/owlapi-developer >>> >>> >>> ----- >>> Graham Matthews, Ph.D. >>> CEO >>> OrangeDog >>> ----- >>> >>> The information contained in this message (including any files transmitted with this message) may contain proprietary, trade secret or other confidential and/or legally privileged information. Any pricing information contained in this message (or in any files transmitted with this message) is confidential and cannot be shared with any third parties without prior written approval from OrangeDog. This message is intended to be read only by the individual or entity to whom it is addressed or by their designee. If the reader of this message is not the intended recipient, you are on notice that any use, disclosure, copying or distribution of this message, in any form, is strictly prohibited. If you have received this message in error, please immediately notify the sender and/or OrangeDog and destroy all copies of this message in your possession, custody or control. >>> >>> >>> >>> ------------------------------------------------------------------------------ >>> >>> _______________________________________________ >>> Owlapi-developer mailing list >>> Owl...@li... >>> https://lists.sourceforge.net/lists/listinfo/owlapi-developer >>> >> > > > ------------------------------------------------------------------------------ > > _______________________________________________ > Owlapi-developer mailing list > Owl...@li... > https://lists.sourceforge.net/lists/listinfo/owlapi-developer > |
From: Rodrigo A. <rca...@gm...> - 2015-08-18 14:00:01
|
Actually, you were right since the beginning Ignazio! It seem to be really a version conflict... I've built an even simpler test: read ontology from file (RDF/XML) and write it to System.out in TTL... it worked! Both versions 4.0.2 and 4.1.0 worked fine... The difference was the usage of Alignment API <http://alignapi.gforge.inria.fr/>... in this new project, everything worked fine until adding the API jars... It was hard to see this because Alignment API does not include OWL-API itself... but there are some wrappers <http://alignapi.gforge.inria.fr/ontowrap.html> implementations using version 1.0 and 3.0... The weird part is that these wrappers are inside a package named "fr.inrialpes.exmo.ontowrap", and as far as I could see, there are Ontology and OntologyFactory implementations... I'm using only a single parser to read from an alignment api xml file... The only possible explanation is that when these classes are loaded during runtime, things get messed up... Anyway, I don't know why it would cause conflicts with PrefixManager or OWLDataMinCardinality since they are not available in alignment api... Well, sorry for this mess... and thanks for the help! The tips about multithread are valuable! I'll try the multithread implementation with pellet, without alignment api to see how things go... Rodrigo C. Antonialli ====================================== Rio Claro - SP - Brasil LinkedIn: http://www.linkedin.com/in/rcantonialli Contato: rca...@gm... Skype: rc_antonialli On Tue, Aug 18, 2015 at 3:28 AM, Ignazio Palmisano < ipa...@gm...> wrote: > > On 18 Aug 2015 07:57, "Rodrigo Antonialli" <rca...@gm...> wrote: > > > > I think there's something wrong with version 4+ of owlapi... but I > wasn't able to find what it is.... > > > > When using version 4.0.2 or any other 4+ (including 4.1.0-RC2), there > are a lot of exceptions like these (they vary depending the version): > > > > Exception in thread "main" java.lang.NoSuchMethodError: > org.semanticweb.owlapi.model.PrefixManager.setPrefix(Ljava/lang/String;Ljava/lang/String;)V > > > > The strange is that this method is present at PrefixManager interface: > > > > void setPrefix(@Nonnull String prefixName, @Nonnull String prefix); > > > > This new error occurs in a simple test I've built to check the > versions... without pelelt!! > > > > Can you share the test? Which version of Java are you using? > I. > > > I really don't know why, at runtime, this exception is thrown... Eclipse > can even suggest the method to be used... the same thing with the previous > error regarding pellet... > > > > Does anybody else had issues like these?! Maybe there's something wrong > with my environment (although, when downgrading to version 3.5.2, > everything works fine!) > > > > Regards > > > > > > > > > > Rodrigo C. Antonialli > > ====================================== > > Rio Claro - SP - Brasil > > LinkedIn: http://www.linkedin.com/in/rcantonialli > > Contato: rca...@gm... > > Skype: rc_antonialli > > > > On Mon, Aug 17, 2015 at 4:41 PM, Rodrigo Antonialli < > rca...@gm...> wrote: > >> > >> I couldn't find version 4.1.0-RC4 in the repository... maybe I'm > looking at the wrong place... > >> > >> Anyway, I've downloaded owlapi from github ( > https://github.com/owlcs/owlapi) and compiled (mvn install)... > >> > >> When using pellet from > >> > >> <dependency> > >> <groupId>net.sourceforge.owlapi</groupId> > >> <artifactId>pellet-owlapi-ignazio1977</artifactId> > >> <version>2.4.0-ignazio1977</version> > >> </dependency> > >> > >> and the owlapi-distribution-4.1.0-RC4-SNAPSHOT.jar I've generated, the > error remains... > >> > >> Among the jars downloaded from maven, I've noticed that it's the same > jar... tried to remove the one from maven, and nothing... > >> > >> I'm checking now the source codes to try to find out what's going on... > (just to notice: I've createad a new, clean project and checked the > classpath... only one version of OWAPI)... > >> > >> Just saw a fix at OWLDataMinCardinality interface, adding the > getProperty() method... maybe it's missing somewhere else... (although > OWLDataCardinalityRestrictionImpl which is super class of > OWLDataMinCardinalityImpl contains the getProperty() method...) > >> > >> Graham, I was thinking something like this when Ignazio said there are > problems using the same reasoner for diffrerent threads... > >> > >> > >> > >> > >> Rodrigo C. Antonialli > >> ====================================== > >> Rio Claro - SP - Brasil > >> LinkedIn: http://www.linkedin.com/in/rcantonialli > >> Contato: rca...@gm... > >> Skype: rc_antonialli > >> > >> On Mon, Aug 17, 2015 at 1:50 PM, Graham Matthews < > gr...@or...> wrote: > >>> > >>> In the past I have had a lot of problems with multi-threaded access to > the OWL-API (where multiple threads are sharing a reasoner). Even something > as simple as getting a string representation of an OWL entity caused > problems (shared buffer somewhere?). My solution was ugly but effective — > create static synchronized methods that take the reasoner/ontology as > parameter and then call on to the reasoner/ontology method you need. > >>> graham > >>> > >>>> On Aug 17, 2015, at 5:37 AM, Rodrigo Antonialli < > rca...@gm...> wrote: > >>>> > >>>> Hi Ignazio, > >>>> > >>>> Thank you very much for your reply! > >>>> > >>>> I need to find the right version and run a simple test, because I've > downloaded OWL-API 4.0.2 and Pellet (master branch from complexible/pellet) > and the error still remained... > >>>> > >>>> I've used different combinations of the jars, some maven > configurations, but in all cases the error remained and I wasn't able to > find an older version of owl-api at the classpath. > >>>> > >>>> I'll clean up everything and try again... If the error still remain, > I'll post more info! > >>>> > >>>> Regarding the reasoner usage in multithread environment, let me ask: > >>>> > >>>> Suppose I've loaded an OWLOntology in the main thread, when a thread > is spawned the ontology is set as a parameter (of the Callable object for > example). So, inside the thread, it's referenced by a local attribute... > The best approach is to create the reasoner inside the thread using this > same ontology?! The inferences will be generated in the main ontology or it > will be copied to each thread?! > >>>> > >>>> Regards > >>>> > >>>> Rodrigo C. Antonialli > >>>> ====================================== > >>>> Rio Claro - SP - Brasil > >>>> LinkedIn: http://www.linkedin.com/in/rcantonialli > >>>> Contato: rca...@gm... > >>>> Skype: rc_antonialli > >>>> > >>>> On Fri, Aug 14, 2015 at 5:31 PM, Ignazio Palmisano < > ipa...@gm...> wrote: > >>>>> > >>>>> On 14 August 2015 at 16:10, Rodrigo Antonialli < > rca...@gm...> wrote: > >>>>> > Hi, > >>>>> > > >>>>> > I've being looking for a way to use OWL-API and Pellet in a > multithread > >>>>> > application. Is it possible?! What dependencies should I use?? > >>>>> > > >>>>> > >>>>> The dependencies are the same for multithread versus non multithread > >>>>> OWLAPI. For better multithread reliability, in OWLAPI 4.1.0 there is > >>>>> an OWLManager.createConcurrentOWLOntologyManager(). However, the new > >>>>> features are for updating an ontology. While reasoning without > changes > >>>>> to the ontology, there won't be meaningful changes. > >>>>> > >>>>> > > >>>>> > Actually, I'd like to load a couple ontologies (mostly TBox) and > run pellet > >>>>> > inferences (classify and realize). Indeed, I was able do so in > separated > >>>>> > threads... > >>>>> > >>>>> Using the same reasoner object from multiple threads could be a > >>>>> problem - I've not tried Pellet, but I met with errors on this area > >>>>> with FaCT++ and JFact, although it was a long time ago. So, YMMV on > >>>>> this - you might need a synchronized wrapper around Pelle. > >>>>> > >>>>> > > >>>>> > Then, I'd spawn some threads to get properties information, like > range, > >>>>> > domain... individuals from range class, etc... (I'm translating > instances > >>>>> > from one ontology to another) > >>>>> > > >>>>> > I've tried to use Pellet 2.3.2 from > https://github.com/complexible/pellet > >>>>> > but there were concurrency issues... It worked sometimes... > sometimes it > >>>>> > crashed or stopped... > >>>>> > > >>>>> > After searching a lot about it, I've found about this Pellet fork > which > >>>>> > would be a pellet with support for OWL-API 4... > >>>>> > > >>>>> > >>>>> For the record, the current Pellet main branch has included the > >>>>> changes I wrote for that fork, so building from the main Pellet > >>>>> repository produces an equivalent artifact. > >>>>> > >>>>> > I've also found out that the thread safe version of OWL-API is in > the > >>>>> > package owl-tools... (although I couldn't find the ThreadSafe* > classes.... ) > >>>>> > > >>>>> > >>>>> With OWLAPI 4.0.2 and 4.1.0 (not released yet), the multithread > >>>>> functionalities in OWLAPITOOLS are merged in the main repository. > >>>>> > >>>>> > Finally, after this search, I've defined the a POM with the > following > >>>>> > dependencies: > >>>>> > > >>>>> > <dependencies> > >>>>> > > >>>>> > <dependency> > >>>>> > > >>>>> > <groupId>org.apache.jena</groupId> > >>>>> > > >>>>> > <artifactId>apache-jena-libs</artifactId> > >>>>> > > >>>>> > <version>2.13.0</version> > >>>>> > > >>>>> > <type>pom</type> > >>>>> > > >>>>> > <exclusions> > >>>>> > > >>>>> > <exclusion> > >>>>> > > >>>>> > <artifactId>slf4j-log4j12</artifactId> > >>>>> > > >>>>> > <groupId>org.slf4j</groupId> > >>>>> > > >>>>> > </exclusion> > >>>>> > > >>>>> > </exclusions> > >>>>> > > >>>>> > </dependency> > >>>>> > > >>>>> > <dependency> > >>>>> > > >>>>> > <groupId>net.sourceforge.owlapi</groupId> > >>>>> > > >>>>> > <artifactId>pellet-core-ignazio1977</artifactId> > >>>>> > > >>>>> > <version>2.4.0-ignazio1977</version> > >>>>> > > >>>>> > </dependency> > >>>>> > > >>>>> > <dependency> > >>>>> > > >>>>> > <groupId>net.sourceforge.owlapi</groupId> > >>>>> > > >>>>> > <artifactId>pellet-owlapi-ignazio1977</artifactId> > >>>>> > > >>>>> > <version>2.4.0-ignazio1977</version> > >>>>> > > >>>>> > </dependency> > >>>>> > > >>>>> > <dependency> > >>>>> > > >>>>> > <groupId>net.sourceforge.owlapi</groupId> > >>>>> > > >>>>> > <artifactId>pellet-query-ignazio1977</artifactId> > >>>>> > > >>>>> > <version>2.4.0-ignazio1977</version> > >>>>> > > >>>>> > </dependency> > >>>>> > > >>>>> > <dependency> > >>>>> > > >>>>> > <groupId>net.sourceforge.owlapi</groupId> > >>>>> > > >>>>> > <artifactId>owlapi-tools</artifactId> > >>>>> > > >>>>> > <version>4.0.2</version> > >>>>> > > >>>>> > </dependency> > >>>>> > > >>>>> > </dependencies> > >>>>> > > >>>>> > > >>>>> > Now, when running the following steps: > >>>>> > > >>>>> > > >>>>> > int availableProcessors = > Runtime.getRuntime().availableProcessors(); > >>>>> > > >>>>> > this.executor = Executors.newFixedThreadPool(availableProcessors); > >>>>> > > >>>>> > this.srcOWLManager = OWLManager.createOWLOntologyManager(); > >>>>> > > >>>>> > this.targetOWLManager = OWLManager.createOWLOntologyManager(); > >>>>> > > >>>>> > //Callable that load a model from jena to owl-api ontology > >>>>> > > >>>>> > Callable<OWLOntology> srcWorker = new > FromJena2OWLAPI(this.srcOWLManager, > >>>>> > srcModel); > >>>>> > > >>>>> > Future<OWLOntology> srcSubmit = executor.submit(srcWorker); > >>>>> > > >>>>> > Callable<OWLOntology> tgtWorker = new > FromJena2OWLAPI(this.targetOWLManager, > >>>>> > targetModel); > >>>>> > > >>>>> > Future<OWLOntology> tgtSubmit = executor.submit(tgtWorker); > >>>>> > > >>>>> > this.srcOntology = srcSubmit.get(5, TimeUnit.SECONDS); > >>>>> > > >>>>> > this.targetOntology = tgtSubmit.get(5, TimeUnit.SECONDS); > >>>>> > > >>>>> > //Until here, everything is fine... The ontologies are loaded > >>>>> > successfully... > >>>>> > > >>>>> > > >>>>> > this.pelletReasoner = > >>>>> > > PelletReasonerFactory.getInstance().createReasoner(this.targetOntology); > >>>>> > > >>>>> > > >>>>> > But when creating the reasoner, I've got: > >>>>> > > >>>>> > > >>>>> > Exception in thread "main" java.lang.NoSuchMethodError: > >>>>> > > org.semanticweb.owlapi.model.OWLDataMinCardinality.getProperty()Lorg/semanticweb/owlapi/model/OWLDataPropertyExpression; > >>>>> > > >>>>> > >>>>> This looks lie a problem with OWLAPI versions, there might be an > older > >>>>> version hiding in the dependencies. I don't think it depends on > >>>>> multithread issues - I've never met with this sort of error when > >>>>> playing with multithread applications. > >>>>> > >>>>> > >>>>> > > >>>>> > > >>>>> > Using the previous version, I could initialize pellet, classify and > >>>>> > realize... and then pass the objects to threads: > >>>>> > > >>>>> > >>>>> I would think so. This confirms that the exception you're seeing is > >>>>> not from the multithread use but from something else. > >>>>> Can you check the exact classpath being used? Something like printing > >>>>> out the value of System.getProperty("java.class.path") should be > >>>>> enough to make sure the right jars are on the classpath. Can you post > >>>>> the result of adding that to your application? > >>>>> > >>>>> HTH, > >>>>> I. > >>>>> > >>>>> > Set<OWLNamedIndividual> individualsInSignature = > >>>>> > this.srcOntology.getIndividualsInSignature(); > >>>>> > > >>>>> > List<Future<OWLOntology>> futures = new > ArrayList<Future<OWLOntology>>(); > >>>>> > > >>>>> > for ( OWLNamedIndividual owlNamedIndividual : > individualsInSignature) { > >>>>> > > >>>>> > Callable<OWLOntology> worker = new IndividualMapper( > >>>>> > > >>>>> > owlNamedIndividual, > >>>>> > > >>>>> > this.srcOWLManager, > >>>>> > > >>>>> > srcOntologyIRI, > >>>>> > > >>>>> > this.pelletReasoner, > >>>>> > > >>>>> > this.targetOntology.getOntologyID().getOntologyIRI().get(), > >>>>> > > >>>>> > translatedOntologyIRI, > >>>>> > > >>>>> > this.referenceAlignment > >>>>> > > >>>>> > ); > >>>>> > > >>>>> > Future<OWLOntology> submit = this.executor.submit(worker); > >>>>> > > >>>>> > futures.add(submit); > >>>>> > > >>>>> > } > >>>>> > > >>>>> > > >>>>> > Inside IndividualMapper, I should work with owl-api and pellet to > get > >>>>> > properties of individuals, and so on... > >>>>> > > >>>>> > I'd really appreciate some help!! > >>>>> > > >>>>> > Rodrigo C. Antonialli > >>>>> > ====================================== > >>>>> > Rio Claro - SP - Brasil > >>>>> > LinkedIn: http://www.linkedin.com/in/rcantonialli > >>>>> > Contato: rca...@gm... > >>>>> > Skype: rc_antonialli > >>>>> > > >>>>> > > ------------------------------------------------------------------------------ > >>>>> > > >>>>> > _______________________________________________ > >>>>> > Owlapi-developer mailing list > >>>>> > Owl...@li... > >>>>> > https://lists.sourceforge.net/lists/listinfo/owlapi-developer > >>>>> > > >>>>> > >>>>> > ------------------------------------------------------------------------------ > >>>>> _______________________________________________ > >>>>> Owlapi-developer mailing list > >>>>> Owl...@li... > >>>>> https://lists.sourceforge.net/lists/listinfo/owlapi-developer > >>>> > >>>> > >>>> > ------------------------------------------------------------------------------ > >>>> _______________________________________________ > >>>> Owlapi-developer mailing list > >>>> Owl...@li... > >>>> https://lists.sourceforge.net/lists/listinfo/owlapi-developer > >>> > >>> > >>> ----- > >>> Graham Matthews, Ph.D. > >>> CEO > >>> OrangeDog > >>> ----- > >>> > >>> The information contained in this message (including any files > transmitted with this message) may contain proprietary, trade secret or > other confidential and/or legally privileged information. Any pricing > information contained in this message (or in any files transmitted with > this message) is confidential and cannot be shared with any third parties > without prior written approval from OrangeDog. This message is intended to > be read only by the individual or entity to whom it is addressed or by > their designee. If the reader of this message is not the > intended recipient, you are on notice that any use, disclosure, copying or > distribution of this message, in any form, is strictly prohibited. If you > have received this message in error, please immediately notify the sender > and/or OrangeDog and destroy all copies of this message in your possession, > custody or control. > >>> > >>> > >>> > >>> > ------------------------------------------------------------------------------ > >>> > >>> _______________________________________________ > >>> Owlapi-developer mailing list > >>> Owl...@li... > >>> https://lists.sourceforge.net/lists/listinfo/owlapi-developer > >>> > >> > > > > > > > ------------------------------------------------------------------------------ > > > > _______________________________________________ > > Owlapi-developer mailing list > > Owl...@li... > > https://lists.sourceforge.net/lists/listinfo/owlapi-developer > > > > > ------------------------------------------------------------------------------ > > _______________________________________________ > Owlapi-developer mailing list > Owl...@li... > https://lists.sourceforge.net/lists/listinfo/owlapi-developer > > |
From: Ignazio P. <ipa...@gm...> - 2015-08-18 14:53:11
|
On 18 August 2015 at 14:59, Rodrigo Antonialli <rca...@gm...> wrote: > Actually, you were right since the beginning Ignazio! It seem to be really a > version conflict... > > I've built an even simpler test: read ontology from file (RDF/XML) and write > it to System.out in TTL... it worked! Both versions 4.0.2 and 4.1.0 worked > fine... > > The difference was the usage of Alignment API... in this new project, > everything worked fine until adding the API jars... > > It was hard to see this because Alignment API does not include OWL-API > itself... but there are some wrappers implementations using version 1.0 and > 3.0... > > The weird part is that these wrappers are inside a package named > "fr.inrialpes.exmo.ontowrap", and as far as I could see, there are Ontology > and OntologyFactory implementations... I'm using only a single parser to > read from an alignment api xml file... > > The only possible explanation is that when these classes are loaded during > runtime, things get messed up... Anyway, I don't know why it would cause > conflicts with PrefixManager or OWLDataMinCardinality since they are not > available in alignment api... That doesn't necessarily matter. If the older jars are in the classpath, then it is down to classpath ordering whether, for example, the OWLDataFactory implementation used is from the new or old OWL API; and then mismatches will appear in one place or another. It just happened to be through these two classes at this point, but it could have happened at any other point. Does the Align API use Maven, or do you add the jars manually to an Eclipse project? In the first case, you could try excluding the OWLAPI dependencies from inside the Align API dependency. You can also try to change the order the jars are included through the Eclipse runtime configuration - if the older classes are not needed for your actual project, you might manage to get it working. Would be useful to update the rest of the dependencies to newer versions of all the components, but that's a bigger tangle to fight with :-) Cheers, I. > > Well, sorry for this mess... and thanks for the help! The tips about > multithread are valuable! > > I'll try the multithread implementation with pellet, without alignment api > to see how things go... > > > Rodrigo C. Antonialli > ====================================== > Rio Claro - SP - Brasil > LinkedIn: http://www.linkedin.com/in/rcantonialli > Contato: rca...@gm... > Skype: rc_antonialli > > On Tue, Aug 18, 2015 at 3:28 AM, Ignazio Palmisano > <ipa...@gm...> wrote: >> >> >> On 18 Aug 2015 07:57, "Rodrigo Antonialli" <rca...@gm...> wrote: >> > >> > I think there's something wrong with version 4+ of owlapi... but I >> > wasn't able to find what it is.... >> > >> > When using version 4.0.2 or any other 4+ (including 4.1.0-RC2), there >> > are a lot of exceptions like these (they vary depending the version): >> > >> > Exception in thread "main" java.lang.NoSuchMethodError: >> > org.semanticweb.owlapi.model.PrefixManager.setPrefix(Ljava/lang/String;Ljava/lang/String;)V >> > >> > The strange is that this method is present at PrefixManager interface: >> > >> > void setPrefix(@Nonnull String prefixName, @Nonnull String prefix); >> > >> > This new error occurs in a simple test I've built to check the >> > versions... without pelelt!! >> > >> >> Can you share the test? Which version of Java are you using? >> I. >> >> > I really don't know why, at runtime, this exception is thrown... Eclipse >> > can even suggest the method to be used... the same thing with the previous >> > error regarding pellet... >> > >> > Does anybody else had issues like these?! Maybe there's something wrong >> > with my environment (although, when downgrading to version 3.5.2, everything >> > works fine!) >> > >> > Regards >> > >> > >> > >> > >> > Rodrigo C. Antonialli >> > ====================================== >> > Rio Claro - SP - Brasil >> > LinkedIn: http://www.linkedin.com/in/rcantonialli >> > Contato: rca...@gm... >> > Skype: rc_antonialli >> > >> > On Mon, Aug 17, 2015 at 4:41 PM, Rodrigo Antonialli >> > <rca...@gm...> wrote: >> >> >> >> I couldn't find version 4.1.0-RC4 in the repository... maybe I'm >> >> looking at the wrong place... >> >> >> >> Anyway, I've downloaded owlapi from github >> >> (https://github.com/owlcs/owlapi) and compiled (mvn install)... >> >> >> >> When using pellet from >> >> >> >> <dependency> >> >> <groupId>net.sourceforge.owlapi</groupId> >> >> <artifactId>pellet-owlapi-ignazio1977</artifactId> >> >> <version>2.4.0-ignazio1977</version> >> >> </dependency> >> >> >> >> and the owlapi-distribution-4.1.0-RC4-SNAPSHOT.jar I've generated, the >> >> error remains... >> >> >> >> Among the jars downloaded from maven, I've noticed that it's the same >> >> jar... tried to remove the one from maven, and nothing... >> >> >> >> I'm checking now the source codes to try to find out what's going on... >> >> (just to notice: I've createad a new, clean project and checked the >> >> classpath... only one version of OWAPI)... >> >> >> >> Just saw a fix at OWLDataMinCardinality interface, adding the >> >> getProperty() method... maybe it's missing somewhere else... (although >> >> OWLDataCardinalityRestrictionImpl which is super class of >> >> OWLDataMinCardinalityImpl contains the getProperty() method...) >> >> >> >> Graham, I was thinking something like this when Ignazio said there are >> >> problems using the same reasoner for diffrerent threads... >> >> >> >> >> >> >> >> >> >> Rodrigo C. Antonialli >> >> ====================================== >> >> Rio Claro - SP - Brasil >> >> LinkedIn: http://www.linkedin.com/in/rcantonialli >> >> Contato: rca...@gm... >> >> Skype: rc_antonialli >> >> >> >> On Mon, Aug 17, 2015 at 1:50 PM, Graham Matthews >> >> <gr...@or...> wrote: >> >>> >> >>> In the past I have had a lot of problems with multi-threaded access to >> >>> the OWL-API (where multiple threads are sharing a reasoner). Even something >> >>> as simple as getting a string representation of an OWL entity caused >> >>> problems (shared buffer somewhere?). My solution was ugly but effective — >> >>> create static synchronized methods that take the reasoner/ontology as >> >>> parameter and then call on to the reasoner/ontology method you need. >> >>> graham >> >>> >> >>>> On Aug 17, 2015, at 5:37 AM, Rodrigo Antonialli >> >>>> <rca...@gm...> wrote: >> >>>> >> >>>> Hi Ignazio, >> >>>> >> >>>> Thank you very much for your reply! >> >>>> >> >>>> I need to find the right version and run a simple test, because I've >> >>>> downloaded OWL-API 4.0.2 and Pellet (master branch from complexible/pellet) >> >>>> and the error still remained... >> >>>> >> >>>> I've used different combinations of the jars, some maven >> >>>> configurations, but in all cases the error remained and I wasn't able to >> >>>> find an older version of owl-api at the classpath. >> >>>> >> >>>> I'll clean up everything and try again... If the error still remain, >> >>>> I'll post more info! >> >>>> >> >>>> Regarding the reasoner usage in multithread environment, let me ask: >> >>>> >> >>>> Suppose I've loaded an OWLOntology in the main thread, when a thread >> >>>> is spawned the ontology is set as a parameter (of the Callable object for >> >>>> example). So, inside the thread, it's referenced by a local attribute... The >> >>>> best approach is to create the reasoner inside the thread using this same >> >>>> ontology?! The inferences will be generated in the main ontology or it will >> >>>> be copied to each thread?! >> >>>> >> >>>> Regards >> >>>> >> >>>> Rodrigo C. Antonialli >> >>>> ====================================== >> >>>> Rio Claro - SP - Brasil >> >>>> LinkedIn: http://www.linkedin.com/in/rcantonialli >> >>>> Contato: rca...@gm... >> >>>> Skype: rc_antonialli >> >>>> >> >>>> On Fri, Aug 14, 2015 at 5:31 PM, Ignazio Palmisano >> >>>> <ipa...@gm...> wrote: >> >>>>> >> >>>>> On 14 August 2015 at 16:10, Rodrigo Antonialli >> >>>>> <rca...@gm...> wrote: >> >>>>> > Hi, >> >>>>> > >> >>>>> > I've being looking for a way to use OWL-API and Pellet in a >> >>>>> > multithread >> >>>>> > application. Is it possible?! What dependencies should I use?? >> >>>>> > >> >>>>> >> >>>>> The dependencies are the same for multithread versus non multithread >> >>>>> OWLAPI. For better multithread reliability, in OWLAPI 4.1.0 there is >> >>>>> an OWLManager.createConcurrentOWLOntologyManager(). However, the new >> >>>>> features are for updating an ontology. While reasoning without >> >>>>> changes >> >>>>> to the ontology, there won't be meaningful changes. >> >>>>> >> >>>>> > >> >>>>> > Actually, I'd like to load a couple ontologies (mostly TBox) and >> >>>>> > run pellet >> >>>>> > inferences (classify and realize). Indeed, I was able do so in >> >>>>> > separated >> >>>>> > threads... >> >>>>> >> >>>>> Using the same reasoner object from multiple threads could be a >> >>>>> problem - I've not tried Pellet, but I met with errors on this area >> >>>>> with FaCT++ and JFact, although it was a long time ago. So, YMMV on >> >>>>> this - you might need a synchronized wrapper around Pelle. >> >>>>> >> >>>>> > >> >>>>> > Then, I'd spawn some threads to get properties information, like >> >>>>> > range, >> >>>>> > domain... individuals from range class, etc... (I'm translating >> >>>>> > instances >> >>>>> > from one ontology to another) >> >>>>> > >> >>>>> > I've tried to use Pellet 2.3.2 from >> >>>>> > https://github.com/complexible/pellet >> >>>>> > but there were concurrency issues... It worked sometimes... >> >>>>> > sometimes it >> >>>>> > crashed or stopped... >> >>>>> > >> >>>>> > After searching a lot about it, I've found about this Pellet fork >> >>>>> > which >> >>>>> > would be a pellet with support for OWL-API 4... >> >>>>> > >> >>>>> >> >>>>> For the record, the current Pellet main branch has included the >> >>>>> changes I wrote for that fork, so building from the main Pellet >> >>>>> repository produces an equivalent artifact. >> >>>>> >> >>>>> > I've also found out that the thread safe version of OWL-API is in >> >>>>> > the >> >>>>> > package owl-tools... (although I couldn't find the ThreadSafe* >> >>>>> > classes.... ) >> >>>>> > >> >>>>> >> >>>>> With OWLAPI 4.0.2 and 4.1.0 (not released yet), the multithread >> >>>>> functionalities in OWLAPITOOLS are merged in the main repository. >> >>>>> >> >>>>> > Finally, after this search, I've defined the a POM with the >> >>>>> > following >> >>>>> > dependencies: >> >>>>> > >> >>>>> > <dependencies> >> >>>>> > >> >>>>> > <dependency> >> >>>>> > >> >>>>> > <groupId>org.apache.jena</groupId> >> >>>>> > >> >>>>> > <artifactId>apache-jena-libs</artifactId> >> >>>>> > >> >>>>> > <version>2.13.0</version> >> >>>>> > >> >>>>> > <type>pom</type> >> >>>>> > >> >>>>> > <exclusions> >> >>>>> > >> >>>>> > <exclusion> >> >>>>> > >> >>>>> > <artifactId>slf4j-log4j12</artifactId> >> >>>>> > >> >>>>> > <groupId>org.slf4j</groupId> >> >>>>> > >> >>>>> > </exclusion> >> >>>>> > >> >>>>> > </exclusions> >> >>>>> > >> >>>>> > </dependency> >> >>>>> > >> >>>>> > <dependency> >> >>>>> > >> >>>>> > <groupId>net.sourceforge.owlapi</groupId> >> >>>>> > >> >>>>> > <artifactId>pellet-core-ignazio1977</artifactId> >> >>>>> > >> >>>>> > <version>2.4.0-ignazio1977</version> >> >>>>> > >> >>>>> > </dependency> >> >>>>> > >> >>>>> > <dependency> >> >>>>> > >> >>>>> > <groupId>net.sourceforge.owlapi</groupId> >> >>>>> > >> >>>>> > <artifactId>pellet-owlapi-ignazio1977</artifactId> >> >>>>> > >> >>>>> > <version>2.4.0-ignazio1977</version> >> >>>>> > >> >>>>> > </dependency> >> >>>>> > >> >>>>> > <dependency> >> >>>>> > >> >>>>> > <groupId>net.sourceforge.owlapi</groupId> >> >>>>> > >> >>>>> > <artifactId>pellet-query-ignazio1977</artifactId> >> >>>>> > >> >>>>> > <version>2.4.0-ignazio1977</version> >> >>>>> > >> >>>>> > </dependency> >> >>>>> > >> >>>>> > <dependency> >> >>>>> > >> >>>>> > <groupId>net.sourceforge.owlapi</groupId> >> >>>>> > >> >>>>> > <artifactId>owlapi-tools</artifactId> >> >>>>> > >> >>>>> > <version>4.0.2</version> >> >>>>> > >> >>>>> > </dependency> >> >>>>> > >> >>>>> > </dependencies> >> >>>>> > >> >>>>> > >> >>>>> > Now, when running the following steps: >> >>>>> > >> >>>>> > >> >>>>> > int availableProcessors = >> >>>>> > Runtime.getRuntime().availableProcessors(); >> >>>>> > >> >>>>> > this.executor = Executors.newFixedThreadPool(availableProcessors); >> >>>>> > >> >>>>> > this.srcOWLManager = OWLManager.createOWLOntologyManager(); >> >>>>> > >> >>>>> > this.targetOWLManager = OWLManager.createOWLOntologyManager(); >> >>>>> > >> >>>>> > //Callable that load a model from jena to owl-api ontology >> >>>>> > >> >>>>> > Callable<OWLOntology> srcWorker = new >> >>>>> > FromJena2OWLAPI(this.srcOWLManager, >> >>>>> > srcModel); >> >>>>> > >> >>>>> > Future<OWLOntology> srcSubmit = executor.submit(srcWorker); >> >>>>> > >> >>>>> > Callable<OWLOntology> tgtWorker = new >> >>>>> > FromJena2OWLAPI(this.targetOWLManager, >> >>>>> > targetModel); >> >>>>> > >> >>>>> > Future<OWLOntology> tgtSubmit = executor.submit(tgtWorker); >> >>>>> > >> >>>>> > this.srcOntology = srcSubmit.get(5, TimeUnit.SECONDS); >> >>>>> > >> >>>>> > this.targetOntology = tgtSubmit.get(5, TimeUnit.SECONDS); >> >>>>> > >> >>>>> > //Until here, everything is fine... The ontologies are loaded >> >>>>> > successfully... >> >>>>> > >> >>>>> > >> >>>>> > this.pelletReasoner = >> >>>>> > >> >>>>> > PelletReasonerFactory.getInstance().createReasoner(this.targetOntology); >> >>>>> > >> >>>>> > >> >>>>> > But when creating the reasoner, I've got: >> >>>>> > >> >>>>> > >> >>>>> > Exception in thread "main" java.lang.NoSuchMethodError: >> >>>>> > >> >>>>> > org.semanticweb.owlapi.model.OWLDataMinCardinality.getProperty()Lorg/semanticweb/owlapi/model/OWLDataPropertyExpression; >> >>>>> > >> >>>>> >> >>>>> This looks lie a problem with OWLAPI versions, there might be an >> >>>>> older >> >>>>> version hiding in the dependencies. I don't think it depends on >> >>>>> multithread issues - I've never met with this sort of error when >> >>>>> playing with multithread applications. >> >>>>> >> >>>>> >> >>>>> > >> >>>>> > >> >>>>> > Using the previous version, I could initialize pellet, classify >> >>>>> > and >> >>>>> > realize... and then pass the objects to threads: >> >>>>> > >> >>>>> >> >>>>> I would think so. This confirms that the exception you're seeing is >> >>>>> not from the multithread use but from something else. >> >>>>> Can you check the exact classpath being used? Something like >> >>>>> printing >> >>>>> out the value of System.getProperty("java.class.path") should be >> >>>>> enough to make sure the right jars are on the classpath. Can you >> >>>>> post >> >>>>> the result of adding that to your application? >> >>>>> >> >>>>> HTH, >> >>>>> I. >> >>>>> >> >>>>> > Set<OWLNamedIndividual> individualsInSignature = >> >>>>> > this.srcOntology.getIndividualsInSignature(); >> >>>>> > >> >>>>> > List<Future<OWLOntology>> futures = new >> >>>>> > ArrayList<Future<OWLOntology>>(); >> >>>>> > >> >>>>> > for ( OWLNamedIndividual owlNamedIndividual : >> >>>>> > individualsInSignature) { >> >>>>> > >> >>>>> > Callable<OWLOntology> worker = new IndividualMapper( >> >>>>> > >> >>>>> > owlNamedIndividual, >> >>>>> > >> >>>>> > this.srcOWLManager, >> >>>>> > >> >>>>> > srcOntologyIRI, >> >>>>> > >> >>>>> > this.pelletReasoner, >> >>>>> > >> >>>>> > this.targetOntology.getOntologyID().getOntologyIRI().get(), >> >>>>> > >> >>>>> > translatedOntologyIRI, >> >>>>> > >> >>>>> > this.referenceAlignment >> >>>>> > >> >>>>> > ); >> >>>>> > >> >>>>> > Future<OWLOntology> submit = this.executor.submit(worker); >> >>>>> > >> >>>>> > futures.add(submit); >> >>>>> > >> >>>>> > } >> >>>>> > >> >>>>> > >> >>>>> > Inside IndividualMapper, I should work with owl-api and pellet to >> >>>>> > get >> >>>>> > properties of individuals, and so on... >> >>>>> > >> >>>>> > I'd really appreciate some help!! >> >>>>> > >> >>>>> > Rodrigo C. Antonialli >> >>>>> > ====================================== >> >>>>> > Rio Claro - SP - Brasil >> >>>>> > LinkedIn: http://www.linkedin.com/in/rcantonialli >> >>>>> > Contato: rca...@gm... >> >>>>> > Skype: rc_antonialli >> >>>>> > >> >>>>> > >> >>>>> > ------------------------------------------------------------------------------ >> >>>>> > >> >>>>> > _______________________________________________ >> >>>>> > Owlapi-developer mailing list >> >>>>> > Owl...@li... >> >>>>> > https://lists.sourceforge.net/lists/listinfo/owlapi-developer >> >>>>> > >> >>>>> >> >>>>> >> >>>>> ------------------------------------------------------------------------------ >> >>>>> _______________________________________________ >> >>>>> Owlapi-developer mailing list >> >>>>> Owl...@li... >> >>>>> https://lists.sourceforge.net/lists/listinfo/owlapi-developer >> >>>> >> >>>> >> >>>> >> >>>> ------------------------------------------------------------------------------ >> >>>> _______________________________________________ >> >>>> Owlapi-developer mailing list >> >>>> Owl...@li... >> >>>> https://lists.sourceforge.net/lists/listinfo/owlapi-developer >> >>> >> >>> >> >>> ----- >> >>> Graham Matthews, Ph.D. >> >>> CEO >> >>> OrangeDog >> >>> ----- >> >>> >> >>> The information contained in this message (including any files >> >>> transmitted with this message) may contain proprietary, trade secret or >> >>> other confidential and/or legally privileged information. Any pricing >> >>> information contained in this message (or in any files transmitted with this >> >>> message) is confidential and cannot be shared with any third parties without >> >>> prior written approval from OrangeDog. This message is intended to be read >> >>> only by the individual or entity to whom it is addressed or by their >> >>> designee. If the reader of this message is not the intended recipient, you >> >>> are on notice that any use, disclosure, copying or distribution of this >> >>> message, in any form, is strictly prohibited. If you have received this >> >>> message in error, please immediately notify the sender and/or OrangeDog and >> >>> destroy all copies of this message in your possession, custody or control. >> >>> >> >>> >> >>> >> >>> >> >>> ------------------------------------------------------------------------------ >> >>> >> >>> _______________________________________________ >> >>> Owlapi-developer mailing list >> >>> Owl...@li... >> >>> https://lists.sourceforge.net/lists/listinfo/owlapi-developer >> >>> >> >> >> > >> > >> > >> > ------------------------------------------------------------------------------ >> > >> > _______________________________________________ >> > Owlapi-developer mailing list >> > Owl...@li... >> > https://lists.sourceforge.net/lists/listinfo/owlapi-developer >> > >> >> >> >> ------------------------------------------------------------------------------ >> >> _______________________________________________ >> Owlapi-developer mailing list >> Owl...@li... >> https://lists.sourceforge.net/lists/listinfo/owlapi-developer >> > > > ------------------------------------------------------------------------------ > > _______________________________________________ > Owlapi-developer mailing list > Owl...@li... > https://lists.sourceforge.net/lists/listinfo/owlapi-developer > |
From: Köhler, S. <seb...@ch...> - 2015-08-27 10:03:03
Attachments:
signature.asc
|
Hi all, > > On Mon, Aug 17, 2015 at 4:41 PM, Rodrigo Antonialli <rca...@gm...> wrote: > >> > >> I couldn't find version 4.1.0-RC4 in the repository... maybe I'm looking at the wrong place... I am also not able to find RC4. Can somebody give me a hint where to find it? Or is the only way to git clone it and mvn install it locally? But why is RC2 available on the internet (e.g. http://mvnrepository.com/artifact/net.sourceforge.owlapi/owlapi-api/4.1.0-RC2), and not RC4? Thanks for any hints, Sebastian |
From: Ignazio P. <ipa...@gm...> - 2015-08-27 10:52:35
|
On 27 August 2015 at 13:02, Köhler, Sebastian <seb...@ch...> wrote: > Hi all, > >> > On Mon, Aug 17, 2015 at 4:41 PM, Rodrigo Antonialli <rca...@gm...> wrote: >> >> >> >> I couldn't find version 4.1.0-RC4 in the repository... maybe I'm looking at the wrong place... > > > I am also not able to find RC4. Can somebody give me a hint where to find it? Or is the only way to git clone it and mvn install it locally? But why is RC2 available on the internet (e.g. http://mvnrepository.com/artifact/net.sourceforge.owlapi/owlapi-api/4.1.0-RC2), and not RC4? > RC2 was promoted to release by mistake. RC4 is at snapshot status and available here: https://oss.sonatype.org/content/repositories/snapshots/net/sourceforge/owlapi/owlapi-distribution/4.1.0-RC4-SNAPSHOT/ Cheers, I. > Thanks for any hints, > Sebastian > > ------------------------------------------------------------------------------ > > _______________________________________________ > Owlapi-developer mailing list > Owl...@li... > https://lists.sourceforge.net/lists/listinfo/owlapi-developer > |
From: Ignazio P. <ipa...@gm...> - 2015-10-31 16:33:24
|
4.1.1 has been released - includes a fix on the osgidistribution jar. I. On 27 August 2015 at 11:52, Ignazio Palmisano <ipa...@gm...> wrote: > On 27 August 2015 at 13:02, Köhler, Sebastian > <seb...@ch...> wrote: >> Hi all, >> >>> > On Mon, Aug 17, 2015 at 4:41 PM, Rodrigo Antonialli <rca...@gm...> wrote: >>> >> >>> >> I couldn't find version 4.1.0-RC4 in the repository... maybe I'm looking at the wrong place... >> >> >> I am also not able to find RC4. Can somebody give me a hint where to find it? Or is the only way to git clone it and mvn install it locally? But why is RC2 available on the internet (e.g. http://mvnrepository.com/artifact/net.sourceforge.owlapi/owlapi-api/4.1.0-RC2), and not RC4? >> > > RC2 was promoted to release by mistake. > RC4 is at snapshot status and available here: > > https://oss.sonatype.org/content/repositories/snapshots/net/sourceforge/owlapi/owlapi-distribution/4.1.0-RC4-SNAPSHOT/ > > Cheers, > I. > >> Thanks for any hints, >> Sebastian >> >> ------------------------------------------------------------------------------ >> >> _______________________________________________ >> Owlapi-developer mailing list >> Owl...@li... >> https://lists.sourceforge.net/lists/listinfo/owlapi-developer >> |