From 3da7fd6c6a1440566c414fa55185c45660255c6c Mon Sep 17 00:00:00 2001 From: Hanna Fuehr <fuehr@itc.rwth-aachen.de> Date: Wed, 6 Jul 2022 11:24:57 +0200 Subject: [PATCH] Update: Fixes in user and resource type structural data migration (coscine/issues#2083) --- .../ResourceTypeStructuralData.cs | 35 +++++++++++++++---- .../Implementations/UserStructuralData.cs | 2 +- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/src/SQL2Linked/Implementations/ResourceTypeStructuralData.cs b/src/SQL2Linked/Implementations/ResourceTypeStructuralData.cs index fe455a9..b36ec5e 100644 --- a/src/SQL2Linked/Implementations/ResourceTypeStructuralData.cs +++ b/src/SQL2Linked/Implementations/ResourceTypeStructuralData.cs @@ -9,6 +9,7 @@ namespace SQL2Linked.Implementations 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 readonly Uri dctermsTitle = new("http://purl.org/dc/terms/title"); public override IEnumerable<IGraph> ConvertToLinkedData(IEnumerable<ResourceType> entries) { @@ -21,25 +22,47 @@ namespace SQL2Linked.Implementations var graph = RdfStoreConnector.GetGraph(resourceTypeGraphName); // check if a triple with a dcat:DataService already exists in the resourcetype graph - var getTriples = graph.GetTriplesWithObject(DcatDataService); + var getTriplesDcatDataService = graph.GetTriplesWithObject(DcatDataService); - if (!getTriples.Any()) + if (!getTriplesDcatDataService.Any()) { graph.Assert( new Triple( - graph.CreateBlankNode(), + graph.CreateUriNode(new Uri(resourceTypeGraphName)), graph.CreateUriNode(RdfType), graph.CreateUriNode(DcatDataService) ) ); - graphs.Add(graph); + Console.WriteLine($"For resource type '{entry.DisplayName}' will migrate triple '{graph.BaseUri}' a dcat:DataService. "); + } + else + { + Console.WriteLine($"For resource type '{entry.DisplayName}' will NOT migrate triple '{graph.BaseUri}' a dcat:DataService. "); + } + + // check if a triple with dcterms:title '{entry.DisplayName}' already exists in the role graph + var getTriplesDctermsTitle = graph.GetTriplesWithPredicate(dctermsTitle); - Console.WriteLine($"Will migrate resource type '{entry.DisplayName}' with id '{entry.Id}'."); + if (!getTriplesDctermsTitle.Any()) + { + graph.Assert( + new Triple( + graph.CreateUriNode(new Uri(resourceTypeGraphName)), + graph.CreateUriNode(dctermsTitle), + graph.CreateLiteralNode(entry.DisplayName) + ) + ); + + Console.WriteLine($"For resource type '{entry.DisplayName}' will migrate triple '{graph.BaseUri}' dcterms:title '{entry.DisplayName}'. "); } else { - Console.WriteLine($"Will NOT migrate resource type '{entry.DisplayName}' with id '{entry.Id}'."); + Console.WriteLine($"For resource type '{entry.DisplayName}' will NOT migrate triple '{graph.BaseUri}' dcterms:title '{entry.DisplayName}'. "); + } + if (!getTriplesDcatDataService.Any() || !getTriplesDctermsTitle.Any()) + { + graphs.Add(graph); } } return graphs; diff --git a/src/SQL2Linked/Implementations/UserStructuralData.cs b/src/SQL2Linked/Implementations/UserStructuralData.cs index 14abb64..3c2d2b3 100644 --- a/src/SQL2Linked/Implementations/UserStructuralData.cs +++ b/src/SQL2Linked/Implementations/UserStructuralData.cs @@ -27,7 +27,7 @@ namespace SQL2Linked.Implementations { graph.Assert( new Triple( - graph.CreateBlankNode(), + graph.CreateLiteralNode(userGraphName), graph.CreateUriNode(RdfType), graph.CreateUriNode(FoafPerson) ) -- GitLab