将 Jena 与 Pellet 一起使用; NoClassDefFoundError 异常
Using Jena with Pellet; NoClassDefFoundError Exception
我正在尝试将 Jena 2.12.1 与 Pellet 一起使用;我从他们的站点 Jena 2.12.1.
下载了最新的 Apache Jena 库
首先,我下载了 Pellet 2.3.1 并导入了 JENA 库。不幸的是,org.mindswap.pellet.jena.PelletReasonerFactory
无法解析,因此,我无法实例化推理器。
然后,我下载了多个版本的jar文件pellet-jena-2.3.2(试过2.3.1和2.3.0)。这解决了 org.mindswap.pellet.jena.PelletReasonerFactory
。但是它导致了异常:
Exception in thread "main" java.lang.NoClassDefFoundError: org/mindswap/pellet/utils/progress/ProgressMonitor
at org.mindswap.pellet.jena.PelletReasoner.bind(PelletReasoner.java:95)
at org.mindswap.pellet.jena.PelletReasoner.bind(PelletReasoner.java:53)
at com.hp.hpl.jena.rdf.model.ModelFactory.createInfModel(ModelFactory.java:261)
at code.BasicOWLHandler.main(BasicOWLHandler.java:678)
Caused by: java.lang.ClassNotFoundException: org.mindswap.pellet.utils.progress.ProgressMonitor
at java.net.URLClassLoader.run(Unknown Source)
at java.net.URLClassLoader.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 4 more
我的代码:
import org.mindswap.pellet.jena.PelletReasonerFactory;
import com.hp.hpl.jena.rdf.model.InfModel;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.reasoner.Reasoner;
public class Test {
public static void main (String [] args)
{
Reasoner reasoner = PelletReasonerFactory.theInstance().create();
// create an empty model
Model emptyModel = ModelFactory.createDefaultModel( );
// create an inferencing model using Pellet reasoner
InfModel model = ModelFactory.createInfModel( reasoner, emptyModel );
}
}
有什么问题吗?有没有更好的方法将 jena 2.12.1 与 Pellet(任何版本)一起使用?
错误消息说从 org.mindswap.pellet.jena.PelletReasoner.bind
调用时找不到 org.mindswap.pellet.utils.progress.ProgressMonitor
。看起来类路径没有所有必要的 Pellet 罐子。与耶拿无关
但是,参见 http://clarkparsia.com/pellet/faq/different-jena-version/。
由于 2 年以上的差距,Pellet 不太可能与 Jena 2.12.1 完美配合。
您可能希望尝试这个分支或其分支之一:https://github.com/ansell/pellet(不推荐任何一种方式)
您提供给 Jena 的 link 不是主站点 - 它看起来像是 http://www.apache.org/dist/jena 的镜像。
使用 pellet-2.3.0(2011 年 8 月 22 日)包括 JENA 兼容库而不是 pellet-2.3.1 解决了这个问题。
如果有人遇到此问题并想将 Jena 2.13 与 Pellet 一起使用,自从 2015 年 7 月 14 日 使用 Pellet 2.4。请参阅提交 #7b07bf.
开始吧,运行 您只需通过克隆他们的存储库和 运行 mvn compile
自己构建 JAR。它们还包括 an example 使用 Jena 2.13。
要将 Pellet 与 Jena 一起使用,请按照 their FAQs 上的说明进行操作:
// ontology that will be used
String ont = "http://www.mindswap.org/2004/owl/mindswappers";
// create an empty ontology model using Pellet spec
OntModel model = ModelFactory.createOntologyModel( PelletReasonerFactory.THE_SPEC );
// read the file
model.read( ont );
我正在尝试将 Jena 2.12.1 与 Pellet 一起使用;我从他们的站点 Jena 2.12.1.
下载了最新的 Apache Jena 库首先,我下载了 Pellet 2.3.1 并导入了 JENA 库。不幸的是,org.mindswap.pellet.jena.PelletReasonerFactory
无法解析,因此,我无法实例化推理器。
然后,我下载了多个版本的jar文件pellet-jena-2.3.2(试过2.3.1和2.3.0)。这解决了 org.mindswap.pellet.jena.PelletReasonerFactory
。但是它导致了异常:
Exception in thread "main" java.lang.NoClassDefFoundError: org/mindswap/pellet/utils/progress/ProgressMonitor
at org.mindswap.pellet.jena.PelletReasoner.bind(PelletReasoner.java:95)
at org.mindswap.pellet.jena.PelletReasoner.bind(PelletReasoner.java:53)
at com.hp.hpl.jena.rdf.model.ModelFactory.createInfModel(ModelFactory.java:261)
at code.BasicOWLHandler.main(BasicOWLHandler.java:678)
Caused by: java.lang.ClassNotFoundException: org.mindswap.pellet.utils.progress.ProgressMonitor
at java.net.URLClassLoader.run(Unknown Source)
at java.net.URLClassLoader.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 4 more
我的代码:
import org.mindswap.pellet.jena.PelletReasonerFactory;
import com.hp.hpl.jena.rdf.model.InfModel;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.reasoner.Reasoner;
public class Test {
public static void main (String [] args)
{
Reasoner reasoner = PelletReasonerFactory.theInstance().create();
// create an empty model
Model emptyModel = ModelFactory.createDefaultModel( );
// create an inferencing model using Pellet reasoner
InfModel model = ModelFactory.createInfModel( reasoner, emptyModel );
}
}
有什么问题吗?有没有更好的方法将 jena 2.12.1 与 Pellet(任何版本)一起使用?
错误消息说从 org.mindswap.pellet.jena.PelletReasoner.bind
调用时找不到 org.mindswap.pellet.utils.progress.ProgressMonitor
。看起来类路径没有所有必要的 Pellet 罐子。与耶拿无关
但是,参见 http://clarkparsia.com/pellet/faq/different-jena-version/。 由于 2 年以上的差距,Pellet 不太可能与 Jena 2.12.1 完美配合。
您可能希望尝试这个分支或其分支之一:https://github.com/ansell/pellet(不推荐任何一种方式)
您提供给 Jena 的 link 不是主站点 - 它看起来像是 http://www.apache.org/dist/jena 的镜像。
使用 pellet-2.3.0(2011 年 8 月 22 日)包括 JENA 兼容库而不是 pellet-2.3.1 解决了这个问题。
如果有人遇到此问题并想将 Jena 2.13 与 Pellet 一起使用,自从 2015 年 7 月 14 日 使用 Pellet 2.4。请参阅提交 #7b07bf.
开始吧,运行 您只需通过克隆他们的存储库和 运行 mvn compile
自己构建 JAR。它们还包括 an example 使用 Jena 2.13。
要将 Pellet 与 Jena 一起使用,请按照 their FAQs 上的说明进行操作:
// ontology that will be used
String ont = "http://www.mindswap.org/2004/owl/mindswappers";
// create an empty ontology model using Pellet spec
OntModel model = ModelFactory.createOntologyModel( PelletReasonerFactory.THE_SPEC );
// read the file
model.read( ont );