Разбор файла schema.org ttl / owl с использованием Jena

Я пишу генератор кода, который генерирует сущности (POJO на языке Java) из схемы, определенной здесьhttp://schema.rdfs.org/all.ttl, Я использую Jena для анализа ttl-файла и получения метаданных, которые мне нужны для их генерации.

Jena успешно анализирует файл, однако по какой-то причине в нем не перечислены все атрибуты данного объекта, например Person. Я не уверен, что делаю что-то не так, использую неправильный API и т. Д. Вот пример кода, который воссоздает сценарий:

    public class PersonParser {

    public static void main(String[] args) {
        OntModel model = ModelFactory.createOntologyModel();
        URL url = Thread.currentThread().getContextClassLoader().getResource("schema_org.ttl");
        model.read(url.toString(), "TURTLE");
        OntClass ontclass = model.getOntClass("http://schema.org/Person");
        Iterator<OntProperty> props = ontclass.listDeclaredProperties();
        while (props.hasNext()) {
            OntProperty p = props.next();
            System.out.println("p:" + p.getLocalName());
        }
    }
}

По сути, я ищу только один класс с именем Person и пытаюсь перечислить все его свойства и получить следующее:

p:alternateName
p:deathDate
p:alumniOf
p:sameAs
p:url
p:additionalName
p:homeLocation
p:description
p:nationality
p:sibling
p:follows
p:siblings
p:colleagues
p:memberOf
p:knows
p:name
p:gender
p:birthDate
p:children
p:familyName
p:jobTitle
p:workLocation
p:parents
p:affiliation
p:givenName
p:honorificPrefix
p:parent
p:colleague
p:additionalType
p:honorificSuffix
p:image
p:worksFor
p:relatedTo
p:spouse
p:performerIn

Но если вы посмотрите наhttp://schema.org/Person, у него есть куча свойств, которые он не перечислил (например,address). Декларацияschema:address вhttp://schema.rdfs.org/all.ttl является:

schema:address a rdf:Property;
    rdfs:label "Address"@en;
    rdfs:comment "Physical address of the item."@en;
    rdfs:domain [ a owl:Class; owl:unionOf (schema:Person schema:Place schema:Organization) ];
    rdfs:range schema:PostalAddress;
    rdfs:isDefinedBy <http://schema.org/Person>;
    rdfs:isDefinedBy <http://schema.org/Place>;
    rdfs:isDefinedBy <http://schema.org/Organization>;
    .

Кто-нибудь сталкивался с этим? Должен ли я использовать другой интерфейс Jena для разбора схемы?

Ответы на вопрос(1)

Ваш ответ на вопрос