2012-05-07 13 views
5

Necesito crear RDF que tiene este aspecto:¿Cómo obtener RDF/XML anidado de Jena?

<rdf:Description rdf:about='uri1'> 
    <namespace:level1> 
    <rdf:Description> 
     <namespace:blankNode rdf:resource='uri2'/> 
     <namespace:text></namespace:text> 
    </rdf:Description> 
    </namespace:level1> 
</rdf:Description> 

<rdf:Description rdf:about="uri2"> 
    some properties here 
</rdf:Description> 

Como se puede ver, hay estructuras anidadas, así como nodos en blanco. (No sé si esa es la terminología exacta para la propiedad "blankNode" en mi estructura.) Si uso

model.write(System.out, "RDF/XML-ABBREV"); 

entonces incluso el nodo está anidada en blanco, lo que no quiero. ¿Hay alguna forma de obtener este tipo de estructura con Jena? ¿O hay alguna otra biblioteca para Java que pueda manejar esto mejor?

Respuesta

6

Creo que va por este camino equivocado.

Anidar es un concepto que solo tiene sentido cuando se habla de árboles. Pero RDF no se trata de árboles, se trata de triples. Olvídese por un momento de la estructura del XML y piense en los triples codificados en el XML. Encuentro model.write(System.out, "N-TRIPLES"); más útil para eso.

Primero necesita comprender qué triples quiere que exprese su archivo RDF/XML. Siempre y cuando exprese los triples correctos, no importa si el nodo está escrito anidado dentro del otro o en qué orden aparecen las cosas. Estas son preguntas puramente "cosméticas", como la sangría.

+0

¡Gracias por la explicación! Es para un proyecto escolar, así que me dieron los requisitos para la estructura :). Pero sí hablé con mi profesor y lo cambié. – user1355348

+0

Completamente de acuerdo con cygri, también pruebe model.write (System.out, "TURTLE"); (una serialización más "humana") y olvidarse de aprender sobre RDF mirando su serialización RDF/XML. Es bueno exigir que se modifiquen los "requisitos extraños". ;-) – castagna

+0

¡Buen trabajo en "iluminar" a tu profesor! Definitivamente se merece un +1 por eso ;-) – cygri