首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OWL api查找类的属性

OWL api查找类的属性
EN

Stack Overflow用户
提问于 2014-05-14 17:56:03
回答 2查看 2.5K关注 0票数 3

我有一个本体文件,我可以获得its中的所有类(我使用的是OWL-API)。那么,我应该为每个类检索存在于我的文件.owl中的数据属性和对象属性,有什么方法可以用OWL-API获取它们吗?

EN

回答 2

Stack Overflow用户

发布于 2016-01-21 03:59:06

代码语言:javascript
复制
public void test(){

        File file = new File("Ontology.owl");
        OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
        OWLOntology ontology;

        try {
            ontology = manager.loadOntologyFromOntologyDocument(file);

            Set<OWLClass> classes;
            Set<OWLObjectProperty> prop;
            Set<OWLDataProperty> dataProp;
            Set<OWLNamedIndividual> individuals;

            classes = ontology.getClassesInSignature();
            prop = ontology.getObjectPropertiesInSignature();
            dataProp = ontology.getDataPropertiesInSignature();
            individuals = ontology.getIndividualsInSignature();
            //configurator = new OWLAPIOntologyConfigurator(this);            

            System.out.println("Classes");
            System.out.println("--------------------------------");
            for (OWLClass cls : classes) {
                System.out.println("+: " + cls.getIRI().getShortForm());

                System.out.println(" \tObject Property Domain");
                for (OWLObjectPropertyDomainAxiom op : ontology.getAxioms(AxiomType.OBJECT_PROPERTY_DOMAIN)) {                        
                        if (op.getDomain().equals(cls)) {   
                            for(OWLObjectProperty oop : op.getObjectPropertiesInSignature()){
                                 System.out.println("\t\t +: " + oop.getIRI().getShortForm());
                            }
                            //System.out.println("\t\t +: " + op.getProperty().getNamedProperty().getIRI().getShortForm());
                        }
                    }

                    System.out.println(" \tData Property Domain");
                    for (OWLDataPropertyDomainAxiom dp : ontology.getAxioms(AxiomType.DATA_PROPERTY_DOMAIN)) {
                        if (dp.getDomain().equals(cls)) {   
                            for(OWLDataProperty odp : dp.getDataPropertiesInSignature()){
                                 System.out.println("\t\t +: " + odp.getIRI().getShortForm());
                            }
                            //System.out.println("\t\t +:" + dp.getProperty());
                        }
                    }

            }

        } catch (OWLOntologyCreationException ex) {
            Logger.getLogger(OntologyAPI.class.getName()).log(Level.SEVERE, null, ex);
        }
}
票数 4
EN

Stack Overflow用户

发布于 2014-05-15 17:23:26

我认为,这应该是一个答案,而不是一个评论。

要获取类的属性,只需使用getSuperClasses。所以,如果你有一个这样的类

代码语言:javascript
复制
A
  :subClassOf (r some B)

然后,(getSuperClasses A)将返回一个具有单个OWLClassExpression的集合,该集合将是OWLObjectSomeValuesFrom的一个实例。反过来,您可以使用getProperty获取该属性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23651313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档