private void BuildSKOSFeed(object models, Stream stream, string contenttype)
        {
            ConceptSheme conceptSheme = new ConceptSheme(models);

            //TODO! Relative lenker....
            XNamespace baseXML = conceptSheme.id.Replace(conceptSheme.seoname, null);

            XElement xdoc =
                new XElement(rdfNs + "RDF", new XAttribute(XNamespace.Xmlns + "skos", skosNs),
                             new XAttribute(XNamespace.Xmlns + "rdf", rdfNs),
                             new XAttribute(XNamespace.Xmlns + "dcterms", dctermsNs),
                             new XAttribute(XNamespace.Xmlns + "adms", admsNs),
                             new XAttribute(XNamespace.Xmlns + "dcat", dcatNs),
                             new XAttribute(XNamespace.Xml + "base", baseXML),
                             new XElement(skosNs + "ConceptScheme", new XAttribute(rdfNs + "about", conceptSheme.id),
                                          GetElementsForConceptScheme(conceptSheme)
                                          ),

                             from c in conceptSheme.concepts
                             select new XElement(skosNs + "Concept", new XAttribute(rdfNs + "about", c.id),
                                                 GetElementsForConcept(conceptSheme, c)
                                                 ));

            using (XmlWriter writer = XmlWriter.Create(stream))
            {
                xdoc.WriteTo(writer);
            }
        }
        private List <object> GetElementsForConcept(ConceptSheme conceptSheme, Concept c)
        {
            var inScheme     = new XElement(skosNs + "inScheme", new XAttribute(rdfNs + "resource", conceptSheme.id));
            var topConceptOf = new XElement(skosNs + "topConceptOf", new XAttribute(rdfNs + "resource", conceptSheme.id));

            if (c == null)
            {
                inScheme     = null;
                topConceptOf = null;
                c            = GetConceptFromScheme(conceptSheme);
            }

            List <object> elements = new List <object> {
                inScheme,
                topConceptOf,
                new XElement(skosNs + "prefLabel", c.name, new XAttribute(XNamespace.Xml + "lang", "no")),
                new XElement(skosNs + "Definition", c.description),
                new XElement(dctermsNs + "description", c.description, new XAttribute(XNamespace.Xml + "lang", "no")),
                new XElement(dctermsNs + "identifier", c.codevalue),
                new XElement(admsNs + "status", c.status),
                GetTemporal(c),
                new XElement(dctermsNs + "source", new XAttribute(rdfNs + "resource", c.id)),
            };

            if (!string.IsNullOrWhiteSpace(c.broader))
            {
                elements.Add(new XElement(skosNs + "broader", new XAttribute(rdfNs + "resource", c.broader)));
            }
            return(elements);
        }
Пример #3
0
        private List <object> GetElementsForConcept(ConceptSheme conceptSheme, Concept c)
        {
            List <object> elements = new List <object> {
                new XElement(skosNs + "inScheme", new XAttribute(rdfNs + "resource", conceptSheme.id)),
                new XElement(skosNs + "topConceptOf", new XAttribute(rdfNs + "resource", conceptSheme.id)),
                new XElement(skosNs + "prefLabel", c.name, new XAttribute(XNamespace.Xml + "lang", "no")),
                new XElement(dctermsNs + "description", c.codevalue, new XAttribute(XNamespace.Xml + "lang", "no")),
                new XElement(dctermsNs + "source", new XAttribute(rdfNs + "resource", c.id)),
            };

            if (!string.IsNullOrWhiteSpace(c.broader))
            {
                elements.Add(new XElement(skosNs + "broader", new XAttribute(rdfNs + "resource", c.broader)));
            }
            return(elements);
        }
Пример #4
0
        private List <object> GetElementsForConceptScheme(ConceptSheme conceptSheme)
        {
            List <object> elements = new List <object> {
                new XElement(skosNs + "prefLabel", conceptSheme.name, new XAttribute(XNamespace.Xml + "lang", "no")),
                new XElement(dctermsNs + "description", conceptSheme.description, new XAttribute(XNamespace.Xml + "lang", "no")),
                new XElement(dctermsNs + "source", new XAttribute(rdfNs + "resource", conceptSheme.id)),
            };

            if (!string.IsNullOrWhiteSpace(conceptSheme.broader))
            {
                elements.Add(new XElement(skosNs + "broader", new XAttribute(rdfNs + "resource", conceptSheme.broader)));
            }
            foreach (var item in conceptSheme.narrower)
            {
                elements.Add(new XElement(skosNs + "narrower", new XAttribute(rdfNs + "resource", item)));
            }
            return(elements);
        }
        private Concept GetConceptFromScheme(ConceptSheme conceptSheme)
        {
            Concept concept = new Concept(conceptSheme);

            return(concept);
        }