Skip to content
Snippets Groups Projects

Fix: Deploy only changed graphs

Merged Benedikt Heinrichs requested to merge Hotfix/2352-onlyChanged into master
1 file
+ 44
9
Compare changes
  • Side-by-side
  • Inline
+ 44
9
@@ -90,24 +90,59 @@ public class Program
// Graph Insertion
var queries = new List<string>();
var turtleFiles = Directory.GetFiles(WorkingFolder, "*.ttl", SearchOption.AllDirectories);
foreach (var file in turtleFiles)
var graphAccumulation = new Dictionary<Uri, (Graph, List<string>)>();
Array.ForEach(turtleFiles, (file) =>
{
var fileInfo = new FileInfo(file);
var graph = new Graph();
graph.LoadFromFile(file);
var graphName = graph.BaseUri.ToString();
if (graphAccumulation.ContainsKey(graph.BaseUri))
{
graphAccumulation[graph.BaseUri].Item1.Merge(graph);
graphAccumulation[graph.BaseUri].Item2.Add(file);
}
else
{
graphAccumulation.Add(graph.BaseUri, (graph, new List<string>() { file }));
}
});
if (_rdfStoreConnector.HasGraph(graphName))
foreach (var kv in graphAccumulation)
{
var graph = kv.Value.Item1;
var graphName = kv.Key.ToString();
var currentGraph = _rdfStoreConnector.GetGraph(graphName);
var graphWasChanged = graph.Triples.Count != currentGraph.Triples.Count
|| graph.Triples.Any((triple) => !currentGraph.Triples.Any((currentTriple) =>
(triple.Subject.Equals(currentTriple.Subject) || (triple.Subject.NodeType == NodeType.Blank && currentTriple.Subject.NodeType == NodeType.Blank)
&& triple.Predicate.Equals(currentTriple.Predicate)
&& triple.Object.Equals(currentTriple.Object) || (triple.Object.NodeType == NodeType.Blank && currentTriple.Object.NodeType == NodeType.Blank))));
if (graphWasChanged)
{
_rdfStoreConnector.ClearGraph(graphName);
_logger.LogInformation("Cleared Graph {graphName}", graphName);
if (!currentGraph.IsEmpty)
{
_rdfStoreConnector.ClearGraph(graphName);
_logger.LogInformation("Cleared Graph {graphName}", graphName);
}
else
{
_logger.LogInformation("No Graph {graphName}", graphName);
}
foreach (var file in kv.Value.Item2)
{
var fileInfo = new FileInfo(file);
queries.Add($"ld_dir('{fileInfo.DirectoryName[2..].Replace("\\", "/")}', '{fileInfo.Name}', '{graphName}');");
}
}
else
{
_logger.LogInformation("No Graph {graphName}", graphName);
}
_logger.LogInformation("Skipping {graphName}", graphName);
queries.Add($"ld_dir('{fileInfo.DirectoryName[2..].Replace("\\", "/")}', '{fileInfo.Name}', '{graphName}');");
}
}
queries.Add($"rdf_loader_run ();");
queries.Add($"DELETE from DB.DBA.load_list where 1=1;");
Loading