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