Question

ici est mon document rdf qui est généré par la bibliothèque 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>

Et je tente de récupérer les personnes nœud 1 et nœud 2 avec ce code:

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;

renvoie unfortunatly person_list avec les données suivantes:

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

est-il un moyen / Methode pour obtenir que le nœud 1 et 2 sans leurs sous-éléments dans la liste? (De cours les individus de ID sont générés dynamiquement, donc je ne peux pas rechercher un code spécifique)

Merci.

Était-ce utile?

La solution

Je crois qu'il ya un malentendu ici concernant RDF et XML. RDF est un groupe de triplets qui peuvent être exprimées à la fois en XML et dans d'autres formats de sérialisation. Contrairement à XML, RDF n'est pas hiérarchique, donc il n'y a pas de chose telle que "sous-élément" dans RDF . Le fait que M. Guid est juste est sous M. node_1 est une illusion « suggérée » par la hiérarchie de noeud XML trompeur. Pour démontrer que, je liste les triplets de vos exemples (s'il vous plaît, l'esprit que l'ordre de triplets RDF en est hors de propos!):

"Noeud 1" typeof personne
"Noeud 1" représentation "Default.png"
"Noeud 1" Description "Description"
« Nœud 1 » sait « M. Guid »
"M. Guid" typeof personne
"Noeud 2" typeof personne
"Noeud 2" représentation "Default.png"
"Noeud 2" Description "Description"

les opérations suivantes: Ajouter un autre triple: "M. Guid" sait "Node 1" avec le code suivant:

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

Maintenant, à la fois le nœud 1 connaît M. Guid et M. Guid connaît Node 1, ce qui est un scénario parfaitement légal. Qui serait la racine et qui serait le sous-élément? Le sérialiseur XML sera probablement choisir la première en ligne à la « racine » et l'autre comme le « sous-élément », mais il est arbitraire. L'imbrication est juste une illusion créée par la sérialisation XML. Ne tombez pas pour cela.

La requête vous le feu avec l'instruction rdfDocument.GetIndividuals(Person.Uri, true); filtre simplement tous les individus qui est de type Person, et par conséquent, il renvoie correctement tous les trois gars.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top