2

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

例如:如果我在本体中有一个名为 Car 的类,并且它有几个与之关联的 Object 和 Data 属性,例如 hasColor、hasAudioSystem、hasGps。

我想通过域和范围或仅通过类的名称获取与该特定类链接的所有对象属性。请帮忙..

4

2 回答 2

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());
    }
}
于 2015-05-05T11:24:42.000 回答
0

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

返回与此类的类似框架的视图关联的属性的迭代器。这捕获了类属性的直观概念。这对于在用户界面中呈现本体类很有用,例如通过自动构造一个表单来实例化类的实例。类的框架视图中的属性是通过将此类的 OntModel 中的属性域与类本身进行比较来确定的。

于 2015-05-05T11:37:01.217 回答