如何使用Jena库从Java中读取Ontology中的所有对象属性?

时间:2015-05-05 09:55:44

标签: java rdf owl apache-jena

我想读取OWL文件中存在的所有对象属性。我使用Protege工具创建了该OWL文件。我也加载了模型,但我无法获取对象属性。

  

例如:如果我在Ontology中有一个名为Car的类,并且有   链接到它的几个Object和Data属性,例如hasColor,   hasAudioSystem,hasGps。

我希望通过Domain和Range获取与该特定类链接的所有对象属性,或者仅通过类的名称获取。请帮忙..

2 个答案:

答案 0 :(得分:1)

如果要获取具有声明为域或范围的类型的对象属性列表,使用Jena执行此操作的一种方法如下:

public void objectPropertiesForType(Model m, final Resource type) {
    StmtIterator i = m.listStatements(new SimpleSelector() {
        @Override
        public boolean test(Statement s) {
            if (s.getPredicate().equals(RDFS.domain)
                    || s.getPredicate().equals(RDFS.range)) {
                return (s.getObject().equals(type));
            }
            return false;
        }
    });
    while (i.hasNext()) {
        Statement s = i.next();
        System.out.println("Property: " + s.getSubject().getURI());
    }
}

答案 1 :(得分:0)

在Jena中,您可能想要为该类检索OntClass的实例,然后使用listDeclaredProperties方法,该方法将:

  

在与框架相关联的属性上返回迭代器   这个班级的看法。这捕获了一个直观的概念   一个类的属性。这在呈现本体时很有用   用户界面中的类,例如通过自动构造一个   用于实例化类实例的表单。中的属性   类的框架式视图是通过比较域的确定的   这个类中的属性是具有类本身的OntModel。