Как прочитать все свойства объекта из онтологии в Java, используя библиотеку Jena?

Я хочу прочитать все свойства объекта, присутствующие в файле OWL. Я создал этот OWL-файл, используя инструмент Protege. Я также загрузил модель, но не могу получить свойства объекта.

Например: если у меня есть класс в онтологии с именем Car и с которым связаны несколько свойств объекта и данных, таких как hasColor, hasAudioSystem,hasGps.

Я хочу получить все свойства объекта, связанные с этим конкретным классом через домен и диапазон или только через имя класса. Пожалуйста помоги..

2 ответа

Решение

Если вы хотите получить список свойств объекта, имеющий тип, объявленный как домен или диапазон, один из способов сделать это с 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());
    }
}

В Jena вы, вероятно, захотите получить экземпляр OntClass для класса, а затем использовать метод listDeclaredProperties, который будет:

Возвратите итератор по свойствам, связанным с рамочным представлением этого класса. Это отражает интуитивное представление о свойствах класса. Это может быть полезно при представлении класса онтологии в пользовательском интерфейсе, например, путем автоматического создания формы для создания экземпляров класса. Свойства в рамкообразном представлении класса определяются путем сравнения области свойств в OntModel этого класса с самим классом.

Другие вопросы по тегам