/// <summary>
        /// Добавляет директорию в указанную коллекцию кассеты. Возвращает добавленные в базу данных элементы
        /// </summary>
        /// <param name="dir"></param>
        /// <param name="collectionId"></param>
        /// <returns>Возвращает добавленные в базу данных элементы</returns>
        public static IEnumerable <XElement> AddDirectory(this Cassette cassette, DirectoryInfo dir, string collectionId)
        {
            List <XElement> addedElements = new List <XElement>();
            var             dname         = dir.FullName;
            var             shortname     = dir.Name;
            // TODO: Надо учесть русские имена и с пробелами
            var newcoll_id = "collection_" + cassette.Name + "_" + dname;
            // Поищу, нет ли такой коллекции в базе данных
            var collection_found =
                cassette.db.Elements(ONames.TagCollection)
                .FirstOrDefault((XElement e) =>
            {
                var xabout = e.Attribute(ONames.rdfabout);
                return(xabout != null && xabout.Value == newcoll_id);
            });

            if (collection_found != null)
            {
            }
            else
            {
                // Создам коллекцию
                XElement coll =
                    new XElement(ONames.TagCollection,
                                 new XAttribute(ONames.rdfabout, newcoll_id),
                                 new XElement(ONames.TagName, shortname));
                cassette.db.Add(coll);
                addedElements.Add(coll);
                // Присоединим коллекцию к вышестоящей
                XElement collmem =
                    new XElement(ONames.TagCollectionmember,
                                 new XAttribute(ONames.rdfabout, "cm_" + newcoll_id),
                                 new XElement(ONames.TagCollectionitem,
                                              new XAttribute(ONames.rdfresource, newcoll_id)),
                                 new XElement(ONames.TagIncollection,
                                              new XAttribute(ONames.rdfresource, collectionId)));
                cassette.db.Add(collmem);
                addedElements.Add(collmem);
                cassette.Changed = true;
            }
            // Обработаем файлы и директории
            foreach (var f in dir.GetFiles())
            {
                if (f.Name == "Thumbs.db")
                {
                }
                else
                {
                    addedElements.AddRange(cassette.AddFile(f, newcoll_id));
                }
            }
            foreach (var d in dir.GetDirectories())
            {
                addedElements.AddRange(cassette.AddDirectory(d, newcoll_id));
            }
            return(addedElements);
        }
        public static IEnumerable <XElement> AddNewRdf(this Cassette cassette, string owner)
        {
            string   dbid        = cassette.Name + "_" + owner + "_" + DateTime.Now.Ticks.ToString();
            XElement emptyRdfDoc = Cassette.RDFdb(dbid,
                                                  new XAttribute(ONames.AttOwner, owner),
                                                  new XAttribute(ONames.AttPrefix, dbid + "_"),
                                                  new XAttribute(ONames.AttCounter, "1001"));
            string filepath = cassette.Dir.FullName + "/" + dbid + ".fog";

            emptyRdfDoc.Save(filepath);
            var seq = cassette.AddFile(new FileInfo(filepath), cassette.CollectionId).ToList();
            // Надо добавить владельца в iisstore документа и хорошо бы проставить uri (это надо делать в файле)
            XElement rdfdoc   = seq.First(xe => xe.Name == ONames.TagDocument);
            XElement iisstore = rdfdoc.Element(ONames.TagIisstore);

            iisstore.Add(new XAttribute(ONames.AttOwner, owner));
            File.Delete(filepath);
            return(seq);
        }