Analizar el archivo ttl / owl de schema.org con Jena

Estoy escribiendo un generador de código que genera entidades (POJO en lenguaje Java) a partir del esquema definido aquíhttp://schema.rdfs.org/all.ttl. Estoy usando Jena para analizar el archivo ttl y recuperar los metadatos que necesito para generarlos.

Jena analiza el archivo correctamente, sin embargo, por alguna razón no enumera todos los atributos de una entidad dada, por ejemplo, Persona. No estoy seguro de si estoy haciendo algo mal, usando la API incorrecta, etc. Aquí está el ejemplo de código que recrea el escenario:

    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());
        }
    }
}

Básicamente, solo estoy buscando una clase llamada Persona e intento enumerar todas sus propiedades y lo que obtengo es:

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

Pero si nos fijamoshttp://schema.org/Person, tiene un montón de propiedades que no enumeró (por ejemploaddress) La declaración deschema:address enhttp://schema.rdfs.org/all.ttl es:

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>;
    .

¿Se ha topado alguien con esto? ¿Debería estar usando una interfaz Jena diferente para analizar el esquema?

Respuestas a la pregunta(1)

Su respuesta a la pregunta