From cdea641e19df6a4c547481600ccfc63044c807cc Mon Sep 17 00:00:00 2001 From: Hanna Fuehr <fuehr@itc.rwth-aachen.de> Date: Tue, 5 Jul 2022 09:39:20 +0200 Subject: [PATCH] Update: Migrate resourceType structured data to linked data (coscine/issues#2083) --- .../ResourceTypeStructuralData.cs | 46 ++++++++++++++++++- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/src/SQL2Linked/Implementations/ResourceTypeStructuralData.cs b/src/SQL2Linked/Implementations/ResourceTypeStructuralData.cs index 766787f..007e158 100644 --- a/src/SQL2Linked/Implementations/ResourceTypeStructuralData.cs +++ b/src/SQL2Linked/Implementations/ResourceTypeStructuralData.cs @@ -6,10 +6,52 @@ namespace SQL2Linked.Implementations { public class ResourceTypeStructuralData : StructuralData<ResourceType, ResourceTypeModel> { + public readonly string ResourceTypeUrlPrefix = "https://purl.org/coscine/resourcetype"; + public readonly Uri RdfType = new("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"); + public readonly Uri DcatDataService = new ("http://www.w3.org/ns/dcat#DataService"); + public override IEnumerable<IGraph> ConvertToLinkedData(IEnumerable<ResourceType> entries) { - // ToDo: Implement - throw new NotImplementedException(); + + var graphs = new List<IGraph>(); + + foreach (var entry in entries) + { + var resourceTypeGraphName = $"{ResourceTypeUrlPrefix}/{entry.Id}"; + var graph = RdfStoreConnector.GetGraph(resourceTypeGraphName); + + // check if a triple with a dcat:DataService already exists in the resourcetype graph + var getTriples = graph.GetTriplesWithObject(DcatDataService); + + if (!getTriples.Any()) + { + // check if a resourcetype graph already exists + var exists = RdfStoreConnector.HasGraph(resourceTypeGraphName); + + if (!exists) + { + RdfStoreConnector.CreateNamedGraph(resourceTypeGraphName); + } + + graph.Assert( + new Triple( + graph.CreateBlankNode(), + graph.CreateUriNode(RdfType), + graph.CreateUriNode(DcatDataService) + ) + ); + + graphs.Add(graph); + + Console.WriteLine($"Will migrate resource type '{entry.DisplayName}' with id '{entry.Id}'."); + } + else + { + Console.WriteLine($"Will NOT migrate resource type '{entry.DisplayName}' with id '{entry.Id}'."); + } + } + return graphs; } } + } \ No newline at end of file -- GitLab