Exemplo n.º 1
0
        public static XElement Encode(Metadata dublinCore, string granularity)
        {
            // The DatetimeFormat for OAI-PMH is only valid when it is like this YYYY.MM.DD
            // but c# ist not understanding YYYY ->it must replaced with yyyy & DD -> dd
            granularity = granularity.Replace('Y', 'y');
            granularity = granularity.Replace('D', 'd');

            return(new XElement(MlNamespaces.oaiDc + "dc",
                                new XAttribute(XNamespace.Xmlns + "oai_dc", MlNamespaces.oaiDc),
                                new XAttribute(XNamespace.Xmlns + "dc", MlNamespaces.dcNs),
                                new XAttribute(XNamespace.Xmlns + "xsi", MlNamespaces.dcXsi),
                                new XAttribute(MlNamespaces.dcXsi + "schemaLocation", MlNamespaces.dcSchemaLocation),
                                /* content */
                                MlEncode.Element(MlNamespaces.dcNs + "title", dublinCore.Title),
                                MlEncode.Element(MlNamespaces.dcNs + "creator", dublinCore.Creator),
                                MlEncode.Element(MlNamespaces.dcNs + "subject", dublinCore.Subject),
                                MlEncode.Element(MlNamespaces.dcNs + "description", dublinCore.Description),
                                MlEncode.Element(MlNamespaces.dcNs + "publisher", dublinCore.Publisher),
                                MlEncode.Element(MlNamespaces.dcNs + "contributor", dublinCore.Contributor),
                                !dublinCore.Date.HasValue ? null
                           : new XElement(MlNamespaces.dcNs + "date",
                                          dublinCore.Date.Value.ToUniversalTime().ToString(granularity)),
                                MlEncode.Element(MlNamespaces.dcNs + "type", dublinCore.Type),
                                MlEncode.Element(MlNamespaces.dcNs + "format", dublinCore.Format),
                                MlEncode.Element(MlNamespaces.dcNs + "identifier", dublinCore.Identifier),
                                MlEncode.Element(MlNamespaces.dcNs + "source", dublinCore.Source),
                                MlEncode.Element(MlNamespaces.dcNs + "language", dublinCore.Language),
                                MlEncode.Element(MlNamespaces.dcNs + "relation", dublinCore.Relation),
                                MlEncode.Element(MlNamespaces.dcNs + "coverage", dublinCore.Coverage),
                                MlEncode.Element(MlNamespaces.dcNs + "rights", dublinCore.Rights)
                                ));
        }
Exemplo n.º 2
0
        /* Xml / Metadata operations */

        public static IEnumerable <string> ReverseNames(string value)
        {
            foreach (var xElName in MlEncode.Element("el", value))
            {
                string   normalName = string.Empty;
                string[] splitNames = xElName.Value.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                for (int i = splitNames.Length - 1; i >= 0; i--)
                {
                    normalName += splitNames[i].Trim() + (i == 0 ? "" : " ");
                }
                yield return(normalName);
            }
        }
Exemplo n.º 3
0
 private static XElement EncodeOne(Metadata provenance, string granularity)
 {
     return(new XElement("originDescription",
                         new XAttribute("harvestDate",
                                        DateInGranularity(provenance.AdditionalDateTime1, provenance.AdditionalBool2, granularity)),
                         new XAttribute("altered",
                                        !provenance.AdditionalBool1.HasValue ? bool.FalseString.ToLower() :
                                        provenance.AdditionalBool1.Value.ToString().ToLower()),
                         MlEncode.Element("baseUrl", provenance.Source),
                         MlEncode.Element("identifier", provenance.Identifier),
                         new XAttribute("datestamp",
                                        DateInGranularity(provenance.Date, provenance.AdditionalBool3, granularity)),
                         MlEncode.Element("metadataNamespace", provenance.Format)
                         ));
 }
Exemplo n.º 4
0
        public static XElement Encode(Metadata panSimple, string granularity)
        {
            // The DatetimeFormat for OAI-PMH is only valid when it is like this YYYY.MM.DD
            // but c# ist not understanding YYYY ->it must replaced with yyyy & DD -> dd
            granularity = granularity.Replace('Y', 'y');
            granularity = granularity.Replace('D', 'd');

            XElement Element = new XElement(MlNamespaces.psNs + "dataset",
                                            /*Namespaces*/
                                            new XAttribute(XNamespace.Xmlns + "dc", MlNamespaces.dcNs),
                                            new XAttribute(XNamespace.Xmlns + "xsi", MlNamespaces.psXsi),
                                            /* content */
                                            /*Subject*/
                                            MlEncode.Element(MlNamespaces.dcNs + "title", panSimple.Title),
                                            MlEncode.Element(MlNamespaces.dcNs + "creator", panSimple.Creator),
                                            MlEncode.Element(MlNamespaces.dcNs + "subject", panSimple.Subject),
                                            !panSimple.Date.HasValue ? null
                          : new XElement(MlNamespaces.dcNs + "date",
                                         panSimple.Date.Value.ToUniversalTime().ToString(granularity)),
                                            MlEncode.Element(MlNamespaces.dcNs + "type", panSimple.Type),
                                            MlEncode.Element(MlNamespaces.dcNs + "format", panSimple.Format),
                                            MlEncode.Element(MlNamespaces.dcNs + "identifier", panSimple.Identifier),
                                            MlEncode.Element(MlNamespaces.dcNs + "source", panSimple.Source),
                                            MlEncode.Element(MlNamespaces.dcNs + "language", panSimple.Language),
                                            MlEncode.Element(MlNamespaces.dcNs + "coverage", panSimple.Coverage),
                                            MlEncode.Element(MlNamespaces.dcNs + "rights", panSimple.Rights),

                                            /*PanSimple Extentions*/
                                            MlEncode.Element(MlNamespaces.psNs + "keyword", panSimple.Keyword),
                                            MlEncode.Element(MlNamespaces.psNs + "parameter", panSimple.Parameter),
                                            MlEncode.Element(MlNamespaces.psNs + "method", panSimple.Method),
                                            MlEncode.Element(MlNamespaces.psNs + "sensor", panSimple.Sensor),
                                            MlEncode.Element(MlNamespaces.psNs + "feature", panSimple.Feature),
                                            MlEncode.Element(MlNamespaces.psNs + "taxonomy", panSimple.Taxonomy),
                                            MlEncode.Element(MlNamespaces.psNs + "platform", panSimple.Platform),
                                            MlEncode.Element(MlNamespaces.psNs + "project", panSimple.Project),
                                            MlEncode.Element(MlNamespaces.psNs + "habitat", panSimple.Habitat),
                                            MlEncode.Element(MlNamespaces.psNs + "stratigraphy", panSimple.Stratigraphy),
                                            MlEncode.Element(MlNamespaces.psNs + "pangaea-tech-keyword", panSimple.PangaeaTechKeyword),

                                            /*Links*/

                                            new XElement(MlNamespaces.psNs + "linkage",
                                                         new XAttribute("type", "metadata"),
                                                         new XAttribute("accessRestricted", "false"),
                                                         panSimple.AddtionalData[Metadata.METADATA_URL].ToString()),

                                            new XElement(MlNamespaces.psNs + "linkage",
                                                         new XAttribute("type", "data"),
                                                         new XAttribute("accessRestricted", "false"),
                                                         panSimple.AddtionalData[Metadata.DATA_URL].ToString()),

                                            /*relinks*/
                                            MlEncode.Element(MlNamespaces.psNs + "parentIdentifer", panSimple.Relation),
                                            MlEncode.Element(MlNamespaces.psNs + "additionalContent", panSimple.Description),
                                            MlEncode.Element(MlNamespaces.psNs + "dataCenter", panSimple.Publisher),
                                            MlEncode.Element(MlNamespaces.psNs + "pricipalInvestigator", panSimple.Contributor),

                                            /*Converage*/
                                            new XElement(MlNamespaces.psNs + "coverage",
                                                         MlEncode.Element(MlNamespaces.psNs + "northBoundLatitude",
                                                                          panSimple.CoverageComplex.NorthBoundLatitude == 0 ? null : panSimple.CoverageComplex.NorthBoundLatitude.ToString()),
                                                         MlEncode.Element(MlNamespaces.psNs + "westBoundLongitude",
                                                                          panSimple.CoverageComplex.WestBoundLongitude == 0 ? null : panSimple.CoverageComplex.WestBoundLongitude.ToString()),
                                                         MlEncode.Element(MlNamespaces.psNs + "southhBoundLatitude",
                                                                          panSimple.CoverageComplex.SouthBoundLatitude == 0 ? null : panSimple.CoverageComplex.SouthBoundLatitude.ToString()),
                                                         MlEncode.Element(MlNamespaces.psNs + "eastBoundLongitude",
                                                                          panSimple.CoverageComplex.EastBoundLongitude == 0 ? null : panSimple.CoverageComplex.EastBoundLongitude.ToString()),

                                                         MlEncode.Element(MlNamespaces.psNs + "location", panSimple.CoverageComplex.Location),
                                                         MlEncode.Element(MlNamespaces.psNs + "minEvelation", panSimple.CoverageComplex.MinElevation),
                                                         MlEncode.Element(MlNamespaces.psNs + "maxEvelation", panSimple.CoverageComplex.MaxElevation),
                                                         MlEncode.Element(MlNamespaces.psNs + "StartDate", panSimple.CoverageComplex.StartDate),
                                                         MlEncode.Element(MlNamespaces.psNs + "EndData", panSimple.CoverageComplex.EndDate))
                                            );

            XAttribute attr = new XAttribute(XNamespace.Xmlns + "ps", MlNamespaces.psNs);

            Element.Add(attr);

            return(Element);
        }