/// <summary> /// Получение семантического элемента из его описателя в виде XML /// </summary> /// <param name="source">XML-элемент, содержащий описатель семантического элемента</param> /// <returns>Объект или свойство</returns> private static SemanticElement GetSemanticElement(XElement source) { string internalName = source.Name.LocalName; if (source.HasElements) { SemanticObject output = new SemanticObject(internalName) { RdfNamespace = source.Name.NamespaceName.TrimEnd('/') }; foreach (XElement element in source.Elements()) output.Elements.Add(GetSemanticElement(element)); return output; } else { SemanticProperty output = new SemanticProperty(internalName, source.Value); return output; } }