Skip to content
Snippets Groups Projects
Commit eb791fba authored by Hanna Führ's avatar Hanna Führ
Browse files

WIP: Migrate project structured data to linked data (coscine/issues#2085)

parent 96cd4fa4
Branches
No related tags found
1 merge request!10New: Migrate project structured data to linked data
Pipeline #777095 skipped
...@@ -15,19 +15,21 @@ namespace SQL2Linked.Implementations ...@@ -15,19 +15,21 @@ namespace SQL2Linked.Implementations
public readonly Uri rdf = new("http://www.w3.org/1999/02/22-rdf-syntax-ns#"); public readonly Uri rdf = new("http://www.w3.org/1999/02/22-rdf-syntax-ns#");
public readonly Uri cosc = new("https://purl.org/coscine/"); public readonly Uri cosc = new("https://purl.org/coscine/");
private VisibilityModel VisibilityModel = new VisibilityModel(); private VisibilityModel VisibilityModel = new VisibilityModel();
private RoleModel RoleModel = new RoleModel(); private ProjectRoleModel ProjectRoleModel = new ProjectRoleModel();
private ProjectResourceModel ProjectResourceModel = new ProjectResourceModel();
public override IEnumerable<IGraph> ConvertToLinkedData(IEnumerable<Project> entries) public override IEnumerable<IGraph> ConvertToLinkedData(IEnumerable<Project> entries)
{ {
IEnumerable<Visibility> visibilities = VisibilityModel.GetAll(); IEnumerable<Visibility> visibilities = VisibilityModel.GetAll();
IEnumerable<Role> roles = RoleModel.GetAll(); IEnumerable<ProjectRole> projectRoles = ProjectRoleModel.GetAll();
IEnumerable<ProjectResource> projectResources = ProjectResourceModel.GetAll();
var graphs = new List<IGraph>(); var graphs = new List<IGraph>();
string resourceUrlPrefix = "https://hdl.handle.net/" + Prefix; string projectUrlPrefix = "https://hdl.handle.net/" + Prefix;
foreach (var entry in entries) foreach (var entry in entries)
{ {
var projectGraphName = $"{resourceUrlPrefix}/{entry.Id}"; var projectGraphName = $"{projectUrlPrefix}/{entry.Id}";
var graph = new Graph(); var graph = new Graph();
graph.BaseUri = new Uri(projectGraphName); graph.BaseUri = new Uri(projectGraphName);
...@@ -53,7 +55,7 @@ namespace SQL2Linked.Implementations ...@@ -53,7 +55,7 @@ namespace SQL2Linked.Implementations
AssertToGraphLiteralNode(graph, projectGraphName, dcat + "endDate", entry.EndDate.ToString()); AssertToGraphLiteralNode(graph, projectGraphName, dcat + "endDate", entry.EndDate.ToString());
Console.WriteLine($"For project '{entry.DisplayName}' will migrate triple '{projectGraphName} {dcat}endDate {entry.EndDate}'. "); Console.WriteLine($"For project '{entry.DisplayName}' will migrate triple '{projectGraphName} {dcat}endDate {entry.EndDate}'. ");
if (entry.Keywords.Any()) if (entry.Keywords!= null)
{ {
var listKeywords = entry.Keywords.Split(';').ToList(); var listKeywords = entry.Keywords.Split(';').ToList();
foreach (var keyword in listKeywords) foreach (var keyword in listKeywords)
...@@ -97,9 +99,37 @@ namespace SQL2Linked.Implementations ...@@ -97,9 +99,37 @@ namespace SQL2Linked.Implementations
AssertToGraphUriNode(graph, projectGraphName, foaf + "homepage", projectGraphName); AssertToGraphUriNode(graph, projectGraphName, foaf + "homepage", projectGraphName);
Console.WriteLine($"For project '{entry.DisplayName}' will migrate triple '{projectGraphName} {foaf}homepage {projectGraphName}'. "); Console.WriteLine($"For project '{entry.DisplayName}' will migrate triple '{projectGraphName} {foaf}homepage {projectGraphName}'. ");
foreach (var projectRole in projectRoles)
{
if (entry.Id == projectRole.ProjectId)
{
AssertToGraphUriNode(graph, projectGraphName, vcard + "hasMember", cosc + "users/" + projectRole.UserId);
Console.WriteLine($"For project '{entry.DisplayName}' will migrate triple '{projectGraphName} {vcard}hasMember {cosc}users/{projectRole.UserId}'. ");
var blankNode = graph.CreateBlankNode();
AssertToGraphBlankAndUriNode(graph, blankNode, rdf + "type", org + "Membership");
Console.WriteLine($"For project '{entry.DisplayName}' will migrate triple '{blankNode} {rdf}type {org}Membership'. ");
AssertToGraphBlankAndUriNode(graph, blankNode, org + "organization", projectGraphName);
Console.WriteLine($"For project '{entry.DisplayName}' will migrate triple '{blankNode} {org}organization {projectGraphName}'. ");
AssertToGraphBlankAndUriNode(graph, blankNode, org + "role", cosc + "roles/" + projectRole.RoleId);
Console.WriteLine($"For project '{entry.DisplayName}' will migrate triple '{blankNode} {org}role {cosc}roles/{projectRole.RoleId}'. ");
AssertToGraphBlankAndUriNode(graph, blankNode, org + "member", cosc + "users/" + projectRole.UserId);
Console.WriteLine($"For project '{entry.DisplayName}' will migrate triple '{blankNode} {org}member {cosc}users/{projectRole.UserId}'. ");
}
}
foreach (var projectResource in projectResources)
{
if(entry.Id == projectResource.ProjectId)
{
AssertToGraphUriNode(graph, projectGraphName, dcat + "catalog", $"{projectUrlPrefix}/{projectResource.ResourceId}");
Console.WriteLine($"For project '{entry.DisplayName}' will migrate triple '{projectGraphName} {dcat}catalog {projectUrlPrefix}/{projectResource.ResourceId}'. ");
}
}
} }
return graphs; return graphs;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment