Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 加载本体以提取所有导入的名称空间_Java_Protege_Owl Api - Fatal编程技术网

Java 加载本体以提取所有导入的名称空间

Java 加载本体以提取所有导入的名称空间,java,protege,owl-api,Java,Protege,Owl Api,我正在尝试加载保存在电脑上的本体。文件格式为.n3。 在做了大量工作并搜索了可能的解决方案之后,我没有找到加载本体的合适方法 我尝试了以下代码: import edu.stanford.smi.protegex.owl.ProtegeOWL; import edu.stanford.smi.protegex.owl.model.OWLModel; public class Extractor { public static void main(String[] args) { Str

我正在尝试加载保存在电脑上的本体。文件格式为.n3。 在做了大量工作并搜索了可能的解决方案之后,我没有找到加载本体的合适方法

我尝试了以下代码:

import edu.stanford.smi.protegex.owl.ProtegeOWL;
import edu.stanford.smi.protegex.owl.model.OWLModel;

public class Extractor {

public static void main(String[] args) {
    String ontologyURI = "file:///C:/acco.n3";
    try {

        OWLModel owlModel = ProtegeOWL.createJenaOWLModelFromURI(ontologyURI);       
        System.out.println("Worked");

    }catch (Exception exception) {  
        System.out.println("Error can't upload the ontologie ");
    }
}
}
但它总是给我一个错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at com.hp.hpl.jena.graph.Node.<clinit>(Node.java:35)
at com.hp.hpl.jena.rdf.model.impl.ResourceImpl.fresh(ResourceImpl.java:108)
at com.hp.hpl.jena.rdf.model.impl.ResourceImpl.<init>(ResourceImpl.java:68)
at com.hp.hpl.jena.rdf.model.ResourceFactory$Impl.createResource(ResourceFactory.java:176)
at com.hp.hpl.jena.rdf.model.ResourceFactory.createResource(ResourceFactory.java:69)
at com.hp.hpl.jena.vocabulary.RDF.resource(RDF.java:29)
at com.hp.hpl.jena.vocabulary.RDF.<clinit>(RDF.java:37)
at com.hp.hpl.jena.datatypes.xsd.impl.XMLLiteralType.<clinit>(XMLLiteralType.java:30)
at com.hp.hpl.jena.datatypes.TypeMapper.<clinit>(TypeMapper.java:52)
at edu.stanford.smi.protegex.owl.model.impl.OWLSystemFrames.createRDFSDatatypes(Unknown Source)
at edu.stanford.smi.protegex.owl.model.impl.OWLSystemFrames.createOWLInstances(Unknown Source)
at edu.stanford.smi.protegex.owl.model.impl.OWLSystemFrames.createOWLMetaModel(Unknown Source)
at edu.stanford.smi.protegex.owl.model.impl.OWLSystemFrames.<init>(Unknown Source)
at edu.stanford.smi.protegex.owl.swrl.SWRLSystemFrames.<init>(Unknown Source)
at edu.stanford.smi.protegex.owl.model.impl.AbstractOWLModel.createSystemFrames(Unknown Source)
at edu.stanford.smi.protegex.owl.model.impl.AbstractOWLModel.createSystemFrames(Unknown Source)
at edu.stanford.smi.protege.model.DefaultKnowledgeBase.<init>(DefaultKnowledgeBase.java:79)
at edu.stanford.smi.protegex.owl.model.impl.AbstractOWLModel.<init>(Unknown Source)
at edu.stanford.smi.protegex.owl.jena.JenaOWLModel.<init>(Unknown Source)
at edu.stanford.smi.protegex.owl.jena.JenaKnowledgeBaseFactory.createKnowledgeBase(Unknown Source)
at edu.stanford.smi.protege.model.Project.createDomainKB(Project.java:429)
at edu.stanford.smi.protege.model.Project.createDomainKnowledgeBase(Project.java:447)
at edu.stanford.smi.protegex.owl.jena.creator.OwlProjectFromUriCreator.create(Unknown Source)
at edu.stanford.smi.protegex.owl.ProtegeOWL.createJenaOWLModelFromURI(Unknown Source)
at Extractor.main(Extractor.java:28)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
... 25 more
线程“main”java.lang.NoClassDefFoundError中的异常:org/apache/commons/logging/LogFactory 位于com.hp.hpl.jena.graph.Node.(Node.java:35) 在com.hp.hpl.jena.rdf.model.impl.ResourceImpl.fresh(ResourceImpl.java:108)上 位于com.hp.hpl.jena.rdf.model.impl.ResourceImpl.(ResourceImpl.java:68) 在com.hp.hpl.jena.rdf.model.ResourceFactory$Impl.createResource(ResourceFactory.java:176)上 位于com.hp.hpl.jena.rdf.model.ResourceFactory.createResource(ResourceFactory.java:69) 位于com.hp.hpl.jena.词汇表.RDF.resource(RDF.java:29) 访问com.hp.hpl.jena.词汇表.RDF.(RDF.java:37) 位于com.hp.hpl.jena.datatypes.xsd.impl.XMLLiteralType。(XMLLiteralType.java:30) 位于com.hp.hpl.jena.datatypes.TypeMapper.(TypeMapper.java:52) 位于edu.stanford.smi.protegex.owl.model.impl.OWLSystemFrames.createRDFSDatatypes(未知源) 位于edu.stanford.smi.protegex.owl.model.impl.OWLSystemFrames.createOWLInstances(未知源) 位于edu.stanford.smi.protegex.owl.model.impl.OWLSystemFrames.createowlmetalmodel(未知源) 位于edu.stanford.smi.protegex.owl.model.impl.OWLSystemFrames。(未知来源) 位于edu.stanford.smi.protegex.owl.swrl.SWRLSystemFrames。(未知来源) 位于edu.stanford.smi.protegex.owl.model.impl.AbstractOWLModel.createSystemFrames(未知源) 位于edu.stanford.smi.protegex.owl.model.impl.AbstractOWLModel.createSystemFrames(未知源) 位于edu.stanford.smi.protege.model.DefaultKnowledgeBase.(DefaultKnowledgeBase.java:79) 位于edu.stanford.smi.protegex.owl.model.impl.AbstractOWLModel。(未知来源) 在edu.stanford.smi.protegex.owl.jena.JenaOWLModel。(未知来源) 在edu.stanford.smi.protegex.owl.jena.JenaKnowledgeBaseFactory.createKnowledgeBase(未知来源) 位于edu.stanford.smi.protege.model.Project.createDomainKB(Project.java:429) 位于edu.stanford.smi.protege.model.Project.createDomainKnowledgeBase(Project.java:447) 位于edu.stanford.smi.protegex.owl.jena.creator.OwlProjectFromUriCreator.create(未知来源) 位于edu.stanford.smi.protegex.owl.ProtegeOWL.createJenaOWLModelFromURI(未知源) 位于Extractor.main(Extractor.java:28) 原因:java.lang.ClassNotFoundException:org.apache.commons.logging.LogFactory 位于java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582) 位于java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190) 位于java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499) ... 25多 我需要您的帮助来解决这个错误,或者找到一种加载本体的方法来从中提取知识。 提前谢谢


更新:

我将缺少的依赖项添加到类路径中,正如冷冻豌豆的@Roddy所建议的那样

但它给了我以下错误:

WARNING: [Local Folder Repository] The specified file must be a directory. (C:\eclipse-workspace\NewEx\plugins\edu.stanford.smi.protegex.owl) -- LocalFolderRepository.update()
Exception in thread "main" java.lang.NoClassDefFoundError: org/protege/editor/owl/model/hierarchy/roots/Relation
at edu.stanford.smi.protegex.owl.jena.parser.TripleProcessor.<init>(Unknown Source)
at edu.stanford.smi.protegex.owl.jena.parser.GlobalParserCache.getTripleProcessor(Unknown Source)
at edu.stanford.smi.protegex.owl.jena.parser.ProtegeOWLParser.loadTriples(Unknown Source)
at edu.stanford.smi.protegex.owl.jena.parser.ProtegeOWLParser.run(Unknown Source)
at edu.stanford.smi.protegex.owl.jena.JenaKnowledgeBaseFactory.loadKnowledgeBase(Unknown Source)
at edu.stanford.smi.protege.model.Project.loadDomainKB(Project.java:1346)
at edu.stanford.smi.protege.model.Project.createDomainKnowledgeBase(Project.java:456)
at edu.stanford.smi.protegex.owl.jena.creator.OwlProjectFromUriCreator.create(Unknown Source)
at edu.stanford.smi.protegex.owl.ProtegeOWL.createJenaOWLModelFromURI(Unknown Source)
at Extractor.main(Extractor.java:10)
Caused by: java.lang.ClassNotFoundException: org.protege.editor.owl.model.hierarchy.roots.Relation
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
... 10 more
警告:[本地文件夹存储库]指定的文件必须是目录。(C:\eclipseworkspace\NewEx\plugins\edu.stanford.smi.protegex.owl)--LocalFolderRepository.update()
线程“main”java.lang.NoClassDefFoundError中出现异常:org/protege/editor/owl/model/hierarchy/root/Relation
位于edu.stanford.smi.protegex.owl.jena.parser.TripleProcessor。(未知来源)
位于edu.stanford.smi.protegex.owl.jena.parser.GlobalParserCache.getTripleProcessor(未知源)
位于edu.stanford.smi.protegex.owl.jena.parser.ProtegeOWLParser.loadTriples(未知源)
位于edu.stanford.smi.protegex.owl.jena.parser.ProtegeOWLParser.run(未知源)
位于edu.stanford.smi.protegex.owl.jena.JenaKnowledgeBaseFactory.loadKnowledgeBase(未知来源)
位于edu.stanford.smi.protege.model.Project.loadDomainKB(Project.java:1346)
位于edu.stanford.smi.protege.model.Project.createDomainKnowledgeBase(Project.java:456)
位于edu.stanford.smi.protegex.owl.jena.creator.OwlProjectFromUriCreator.create(未知来源)
位于edu.stanford.smi.protegex.owl.ProtegeOWL.createJenaOWLModelFromURI(未知源)
位于Extractor.main(Extractor.java:10)
原因:java.lang.ClassNotFoundException:org.protege.editor.owl.model.hierarchy.roots.Relation
位于java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
位于java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
位于java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
... 10多

有什么建议吗?

java.lang.ClassNotFoundException:org.protege.editor.owl.model.hierarchy.root.Relation

您还需要其他依赖项。您应该使用一个可以为您解决依赖关系闭包的构建系统,比如Maven、Gradle或类似的系统,而不是零碎地进行构建

这里的问题不是特定于Protege或与本体相关的,只是类路径中缺少普通Java库

请注意,您的代码不使用OWLAPI。这些类是Jena类和Protege类(我想是Protege3.x的)。请注意,Protege3.x是一个非常过时的API。考虑使用一个更新版本(5.2.0或更新),或者直接使用实际的OWL API。看


owlapi还有包含所有依赖项的zip文件,这可能会简化您的工作(Maven仍然比手工解析依赖项要好)。请参见

是否尝试将该依赖项添加到类路径?这只是一个日志库。你是对的,谢谢你的回答。首先,我使用了OWLAPI,但它在解析某些词汇表时抛出了一些异常(我需要解析600多个词汇表并从中提取名称空间)。所以我修改了代码,使用了Jena库。我将尝试重建代码并使用OWLAPI。我发现提取我需要的信息更好。