使用OWL-API和Hermit打印Pizza本体的超类



我尝试打印从这里下载的标准Pizza本体的超类。我使用OWL API 3.4.3和Hermit 1.3.8.1(推理器)。

下面的代码片段用于打印类"Food"所需的超类。
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
IRI ontologyIRI =IRI.create("file:/D:/pizza.owl.xml");      
//IRI ontologyIRI =IRI.create("http://www.co-ode.org/ontologies/pizza/pizza.owl");
OWLOntology ontology = manager.loadOntology(ontologyIRI);
OWLReasoner reasoner = new Reasoner.ReasonerFactory().createReasoner(ontology);
OWLDataFactory df = manager.getOWLDataFactory();    
    try{
            reasoner.precomputeInferences(InferenceType.CLASS_ASSERTIONS);
            //following Lines are to see super classes of Container
            OWLClass clsA = df.getOWLClass(IRI.create(ontologyIRI + "#Food"));
            Set<OWLClassExpression> superClasses = clsA.getSuperClasses(ontology);
            System.out.println("in TRY 1");
            //System.out.println("Hello Worldn"+superClasses.iterator().toString());
            for (OWLClassExpression g : superClasses) {
                 System.out.println("The superclasses are:"+g);   
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }

没有得到任何编译错误。在TRY 1中,结果是for循环中的内容没有被打印

在protege 5.0中,我看到了Food类的两个超类;即DomainConceptowl:Thing。为什么这两个名字没有被程序打印出来?

我哪里做错了?

谢谢你的帮助

您的本体IRI是一个本地文件名。当您使用它来获取类IRI时,您将获得与本体中实际使用的IRI不同的IRI。检查类实际具有的IRI,这应该可以解决您的问题。

最新更新