public override BaseResource[] TransformSource(XDocument doc) { Member member = new Member(); XElement seatIncumbencyElement = doc.Element(atom + "entry") .Element(atom + "content") .Element(m + "properties"); ParliamentaryIncumbency incumbency = new ParliamentaryIncumbency(); incumbency.ParliamentaryIncumbencyStartDate = seatIncumbencyElement.Element(d + "StartDate").GetDate(); incumbency.ParliamentaryIncumbencyEndDate = seatIncumbencyElement.Element(d + "EndDate").GetDate(); string memberId = seatIncumbencyElement.Element(d + "Member_Id").GetText(); Uri memberUri = IdRetrieval.GetSubject("memberMnisId", memberId, false, logger); if (memberUri == null) { logger.Warning($"No member found for {memberId}"); return(null); } incumbency.ParliamentaryIncumbencyHasMember = new Member() { Id = memberUri }; incumbency.CommonsSeatIncumbencyMnisId = seatIncumbencyElement.Element(d + "MemberConstituency_Id").GetText(); ParliamentPeriod parliamentPeriod = generateSeatIncumbencyParliamentPeriod(incumbency.ParliamentaryIncumbencyStartDate.Value, incumbency.ParliamentaryIncumbencyEndDate); if (parliamentPeriod != null) { incumbency.SeatIncumbencyHasParliamentPeriod = new ParliamentPeriod[] { parliamentPeriod } } ; string constituencyId = seatIncumbencyElement.Element(d + "Constituency_Id").GetText(); string houseSeatCommand = @" construct { ?id a parl:HouseSeat. } where { ?id parl:houseSeatHasConstituencyGroup ?houseSeatHasConstituencyGroup. ?houseSeatHasConstituencyGroup parl:constituencyGroupMnisId @constituencyGroupMnisId. }"; SparqlParameterizedString seatSparql = new SparqlParameterizedString(houseSeatCommand); seatSparql.Namespaces.AddNamespace("parl", new Uri(schemaNamespace)); seatSparql.SetLiteral("constituencyGroupMnisId", constituencyId); Uri houseSeatUri = IdRetrieval.GetSubject(seatSparql.ToString(), false, logger); if (houseSeatUri != null) { incumbency.SeatIncumbencyHasHouseSeat = new HouseSeat() { Id = houseSeatUri } } ; return(new BaseResource[] { incumbency }); }
public override BaseResource[] TransformSource(JObject jsonResponse) { ParliamentPeriod parliamentPeriod = new ParliamentPeriod(); Uri id = giveMeUri(jsonResponse, "TripleStoreId"); if (id != null) { parliamentPeriod.Id = id; } else { return(null); } parliamentPeriod.ParliamentPeriodNumber = ((JValue)jsonResponse.SelectToken("parliamentPeriodNumber")).GetFloat(); string startDate = ((JValue)jsonResponse.SelectToken("parliamentPeriodStartDate")).GetText(); if (DateTimeOffset.TryParse(startDate, null as IFormatProvider, System.Globalization.DateTimeStyles.AssumeUniversal, out DateTimeOffset startD)) { parliamentPeriod.ParliamentPeriodStartDate = startD; } else { logger.Warning($"Startdate with value {startDate} has wrong value."); return(null); } string endDate = ((JValue)jsonResponse.SelectToken("parliamentPeriodEndDate")).GetText(); if ((string.IsNullOrWhiteSpace(endDate) == false) && (DateTimeOffset.TryParse(endDate, null as IFormatProvider, System.Globalization.DateTimeStyles.AssumeUniversal, out DateTimeOffset endD))) { parliamentPeriod.ParliamentPeriodEndDate = endD; } Uri previousId = giveMeUri(jsonResponse, "ImmediatelyPreviousParliamentPer"); if (previousId != null) { parliamentPeriod.ParliamentPeriodHasImmediatelyPreviousParliamentPeriod = new ParliamentPeriod() { Id = previousId } } ; Uri followingId = giveMeUri(jsonResponse, "ImmediatelyFollowingParliamentPe"); if (followingId != null) { parliamentPeriod.ParliamentPeriodHasImmediatelyFollowingParliamentPeriod = new ParliamentPeriod[] { new ParliamentPeriod() { Id = followingId } } } ; WikidataThing wikidataThing = new WikidataThing(); wikidataThing.Id = id; var wikidataId = ((JValue)jsonResponse.SelectToken("parliamentPeriodWikidataId")).GetText(); var wikidataUri = new Uri(new Uri("http://www.wikidata.org/entity/"), wikidataId); wikidataThing.WikidataThingHasEquivalentWikidataResource = new WikidataResource[] { new WikidataResource() { Id = wikidataUri } }; return(new BaseResource[] { parliamentPeriod, wikidataThing }); }