我正在尝试将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$1.run(Unknown Source)
at java.net.URLClassLoader$1.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 );
}
}
问题是什么?有没有更好的方法在Pellet(任何版本)中使用jena 2.12.1?
最佳答案
错误消息指出,从org.mindswap.pellet.utils.progress.ProgressMonitor
调用时找不到org.mindswap.pellet.jena.PelletReasoner.bind
。看起来classpath没有所有必需的Pellet罐子。与耶拿无关。
但是,请参见http://clarkparsia.com/pellet/faq/different-jena-version/。
由于存在2年以上的差距,Pellet不太可能与Jena 2.12.1完美配合。
您可能希望尝试使用此fork或其分支之一:https://github.com/ansell/pellet(两种方式均不建议)
您提供给Jena的链接不是主站点,它看起来像http://www.apache.org/dist/jena的镜像。