Pregunta

Aquí está mi documento RDF generado por la biblioteca Rowlex:

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
         xmlns:ns="http://xmlns.com/foaf/0.1/" 
         xmlns:privateinfos="http://domain/privateinfos/"> 

    <ns:Person rdf:about="Node 1">
        <ns:depiction rdf:resource="Default.png" />
        <privateinfos:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Description</privateinfos:description>
        <ns:knows>
            <ns:Person rdf:about="6779ac10-210b-40d2-8111-711db6988bb9" />
        </ns:knows> 
    </ns:Person>

    <ns:Person rdf:about="Node 2">
        <ns:depiction rdf:resource="Default.png" />
        <privateinfos:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Description 2</privateinfos:description>
    </ns:Person>

</rdf:RDF>

Y estoy tratando de recuperar el nodo 1 y el nodo 2 individuos con este código:

List<Person> person_list = new List<Document>();
OwlThing[] Persons = _rdfDocument.GetIndividuals(Person.Uri, true);

foreach (Person item_found in Persons)
{
    person_list.Add(item_found);
}

return person_list;

Desafortunadamente, Person_List devuelve con los siguientes datos:

[0] : Node 1
[1] : 6779ac10-210b-40d2-8111-711db6988bb9
[2] : Node 2

Entonces, ¿hay alguna manera/methode para obtener solo el nodo 1 y 2 sin sus sub elementos en la lista? (De los cursos, los identificadores de individuos se generan dinámicamente, por lo que no puedo buscar una identificación específica)

Gracias.

¿Fue útil?

Solución

Creo que hay algunos malentendidos aquí con respecto a RDF y XML. RDF es un montón de triples que se pueden expresar tanto en XML como en otros formatos de serialización. A diferencia de XML, RDF no es jerárquico, por lo tanto no existe tal cosa como "subelemento" en RDF. El hecho de que el Sr. Guid esté solo está bajo MR Node_1 es una ilusión "sugerida" por la engañosa jerarquía del nodo XML. Para demostrar que enumero los triples de sus ejemplos (¡por favor, tenga en cuenta que el orden de los triples en RDF es irrelevante!):

Persona "nodo 1"
"Nodo 1" representación "default.png"
"Nodo 1" Descripción "Descripción"
"Nodo 1" sabe "Sr. Guid"
"Sr. Guid" Typente de Typente
Persona "nodo 2"
"Nodo 2" representación "default.png"
"Nodo 2" Descripción "Descripción"

Pruebe lo siguiente: Agregue un triple más: "Mr. Guid" Knows "Node 1" con el siguiente código:

Person mrGuid = _rdfDocument.GetIndividual("6779ac10-210b-40d2-8111-711db6988bb9") as Person;
Person mrNode1 = _rdfDocument.GetIndividual("Node 1") as Person;
mrGuid.knows = mrNode1;
Console.WriteLine(_rdfDocument.ToRdfXml());

Ahora, ambos Node 1 conocen al Sr. Guid y el Sr. Guid conoce el nodo 1, y este es un escenario perfectamente legal. ¿Quién sería la raíz y quién sería el subelemento? El serializador XML probablemente elegirá el primero en fila para ser la "raíz" y la otra como el "subelemento", pero es arbitrario. La anidación es solo una ilusión creada por la serialización XML. No te enamores de eso.

La consulta que disparas con el rdfDocument.GetIndividuals(Person.Uri, true); La declaración simplemente filma a todas las personas que son de tipo Person, y, por lo tanto, devuelve correctamente los tres tipos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top