static XElement CreateNuspecMetadata(TripleStore store, Uri packageUri) { SparqlParameterizedString sparql = new SparqlParameterizedString(); sparql.CommandText = Utils.GetResource("sparql.SelectPackageDetails.rq"); sparql.SetUri("package", packageUri); SparqlResult packageInfo = SparqlHelpers.Select(store, sparql.ToString()).FirstOrDefault(); if (packageInfo == null) { throw new ArgumentException(string.Format("no package details for {0}", packageUri)); } XElement metadata = new XElement(nuget.GetName("metadata")); metadata.Add(new XElement(nuget.GetName("id"), packageInfo["id"].ToString())); metadata.Add(new XElement(nuget.GetName("version"), packageInfo["version"].ToString())); // in the nuspec the published and owners fields are not present and ignored respectfully //if (packageInfo.HasBoundValue("published")) //{ // DateTime val = DateTime.Parse(((ILiteralNode)packageInfo["published"]).Value); // metadata.Add(new XElement(nuget.GetName("published"), val.ToUniversalTime().ToString("O"))); //} if (packageInfo.HasBoundValue("authors")) { metadata.Add(new XElement(nuget.GetName("authors"), packageInfo["authors"].ToString())); } if (packageInfo.HasBoundValue("description")) { metadata.Add(new XElement(nuget.GetName("description"), packageInfo["description"].ToString())); } if (packageInfo.HasBoundValue("summary")) { metadata.Add(new XElement(nuget.GetName("summary"), packageInfo["summary"].ToString())); } if (packageInfo.HasBoundValue("language")) { metadata.Add(new XElement(nuget.GetName("language"), packageInfo["language"].ToString())); } if (packageInfo.HasBoundValue("title")) { metadata.Add(new XElement(nuget.GetName("title"), packageInfo["title"].ToString())); } if (packageInfo.HasBoundValue("targetFramework")) { metadata.Add(new XElement(nuget.GetName("targetFramework"), packageInfo["targetFramework"].ToString())); } if (packageInfo.HasBoundValue("requireLicenseAcceptance")) { bool val = bool.Parse(((ILiteralNode)packageInfo["requireLicenseAcceptance"]).Value); metadata.Add(new XElement(nuget.GetName("requireLicenseAcceptance"), val)); } if (packageInfo.HasBoundValue("licenseUrl")) { metadata.Add(new XElement(nuget.GetName("licenseUrl"), packageInfo["licenseUrl"].ToString())); } if (packageInfo.HasBoundValue("iconUrl")) { metadata.Add(new XElement(nuget.GetName("iconUrl"), packageInfo["iconUrl"].ToString())); } if (packageInfo.HasBoundValue("projectUrl")) { metadata.Add(new XElement(nuget.GetName("projectUrl"), packageInfo["projectUrl"].ToString())); } if (packageInfo.HasBoundValue("releaseNotes")) { metadata.Add(new XElement(nuget.GetName("releaseNotes"), packageInfo["releaseNotes"].ToString())); } if (packageInfo.HasBoundValue("copyright")) { metadata.Add(new XElement(nuget.GetName("copyright"), packageInfo["copyright"].ToString())); } if (packageInfo.HasBoundValue("minClientVersion")) { metadata.Add(new XAttribute("minClientVersion", packageInfo["minClientVersion"].ToString())); } if (packageInfo.HasBoundValue("developmentDependency")) { bool val = bool.Parse(((ILiteralNode)packageInfo["developmentDependency"]).Value); metadata.Add(new XElement(nuget.GetName("developmentDependency"), val)); } return(metadata); }