Я считаю, что здесь есть некоторое недопонимание относительно RDF и XML.RDF - это набор троек, которые могут быть выражены как в XML, так и в других форматах сериализации.В отличие от XML, RDF не является иерархическим, поэтому в RDF не существует такого понятия, как «подэлемент».Тот факт, что мистер Гуид находится под управлением мистера Node_1, является иллюзией, «предложенной» вводящей в заблуждение иерархией узлов XML.Чтобы продемонстрировать это, я перечисляю тройки ваших примеров (имейте в виду, что порядок троек в RDF не имеет значения!):
"Node 1" typeOf Person
"Node 1" decification "По умолчанию.png "
" Узел 1 "описание" Описание "
" Узел 1 "знает" Мистер Гуид "
Тип" Мистер Гуид "Тип Персоны
Тип" Узел 2 "Тип Персоны
" Узел2 "depiction" Default.png "
" Узел 2 "описание" Описание "
Попробуйте следующее: Добавьте еще одну тройку:" Мистер Гуид "знает" Узел 1 "со следующим кодом:
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());
Теперь и Узел 1 знает мистера Гуида, и мистер Гуид знает Узел 1, и это совершенно законный сценарий.Кто будет корнем, а кто будет субэлементом?Сериализатор XML, вероятно, выберет первый в строке «корень», а другой - «подэлемент», но он произвольный.Вложенность - это иллюзия, созданная сериализацией XML.Не поддавайтесь на это.
Запрос, который вы запускаете с помощью оператора rdfDocument.GetIndividuals(Person.Uri, true);
, просто отфильтровывает всех людей, имеющих тип Person
, и, следовательно, корректно возвращает всех трех парней.