public override BaseResource[] SynchronizeIds(BaseResource[] source, Uri subjectUri, BaseResource[] target) { MnisAnsweringBody answeringBody = source.OfType <MnisAnsweringBody>().SingleOrDefault(); if (answeringBody.Id == null) { answeringBody.Id = subjectUri; } return(new BaseResource[] { answeringBody }); }
public override BaseResource[] TransformSource(XDocument doc) { MnisAnsweringBody answeringBody = new MnisAnsweringBody(); XElement element = doc.Descendants(m + "properties").SingleOrDefault(); answeringBody.AnsweringBodyMnisId = element.Element(d + "AnsweringBody_Id").GetText(); string GroupHasNameSparqlCommand = @" construct { ?answeringBody parl:groupName ?name. } where { ?answeringBody parl:answeringBodyMnisId @id; parl:groupName ?name; . }"; SparqlParameterizedString sparql = new SparqlParameterizedString(GroupHasNameSparqlCommand); sparql.SetLiteral("id", answeringBody.AnsweringBodyMnisId); sparql.Namespaces.AddNamespace("parl", new Uri(schemaNamespace)); var groupNameGraph = GraphRetrieval.GetGraph(sparql.ToString(), logger); bool groupHasNoName = groupNameGraph.IsEmpty; if (groupHasNoName == true) { answeringBody.GroupName = element.Element(d + "Name").GetText(); } else { var currentName = groupNameGraph.GetTriplesWithPredicate(new Uri("https://id.parliament.uk/schema/groupName")).FirstOrDefault().Object.ToString(); answeringBody.GroupName = currentName; } string departmentId = element.Element(d + "Department_Id").GetText(); if (string.IsNullOrWhiteSpace(departmentId) == false) { Uri departmentUri = IdRetrieval.GetSubject("mnisDepartmentId", departmentId, false, logger); if (departmentUri != null) { answeringBody.Id = departmentUri; } else { logger.Warning($"Department ({departmentId}) not found for Answering Body ({answeringBody.AnsweringBodyMnisId})"); return(null); } } return(new BaseResource[] { answeringBody }); }