Skip to content

Commit

Permalink
made api for connected
Browse files Browse the repository at this point in the history
  • Loading branch information
daghovland committed Aug 22, 2024
1 parent fa66c7a commit 856f913
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 15 deletions.
21 changes: 21 additions & 0 deletions client/Boundaries/Boundaries/DatalogCreator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,25 @@ public string CreateBoundaryDatalogRule(string internalComponentLabel, IriRefere
dexpi:PipingOrEquipment [?node].
""";
}


public string CreateConnectedSparqlQuery()
{
return $"select * where {{?s a <{BoundaryGraph}>; <http://sandbox.dexpi.org/rdl/TagNameAssignmentClass> ?tag.}}";
}
public string CreateConnectedDatalogRule(string internalComponentLabel)
{
return $$"""
<{{BoundaryGraph}}> [?node] :-
rdfs:label [?internal, "{{internalComponentLabel}}"],
imf:connectedTo [?internal, ?node],
dexpi:PipingOrEquipment [?node].
<{{BoundaryGraph}}> [?node] :-
<{{BoundaryGraph}}> [?node1],
imf:connectedTo [?node1, ?node],
dexpi:PipingOrEquipment [?node],
NOT dexpi:Equipment [?node1].
""";
}
}
42 changes: 42 additions & 0 deletions client/Boundaries/Boundaries/DexpiApi.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
using IriTools;

namespace Boundaries;

public static class DexpiApi{
public static async Task<string> GetCommissioningPackage(string internalComponentLabel, IriReference[] borderComponentIris, string dexpiFilePath)
{
var datalogCreator = new DatalogCreator();
var datalog = datalogCreator.CreateBoundaryDatalogRule(internalComponentLabel, borderComponentIris);
var conn = RdfoxApi.GetDefaultConnectionSettings();
await RdfoxApi.LoadDatalog(conn, datalog);

var data = File.ReadAllText(dexpiFilePath);
await RdfoxApi.LoadData(conn, data);

var queryString = datalogCreator.CreateCommissioningSparqlQuery();
var result = await RdfoxApi.QuerySparql(conn, queryString);

await RdfoxApi.DeleteData(conn, data);
await RdfoxApi.DeleteDatalog(conn, datalog);
return result;
}


public static async Task<string> GetConnectedEquipment(string internalComponentLabel, string dexpiFilePath)
{
var datalogCreator = new DatalogCreator();
var datalog = datalogCreator.CreateConnectedDatalogRule(internalComponentLabel);
var conn = RdfoxApi.GetDefaultConnectionSettings();
await RdfoxApi.LoadDatalog(conn, datalog);

var data = File.ReadAllText(dexpiFilePath);
await RdfoxApi.LoadData(conn, data);

var queryString = datalogCreator.CreateConnectedSparqlQuery();
var result = await RdfoxApi.QuerySparql(conn, queryString);

await RdfoxApi.DeleteData(conn, data);
await RdfoxApi.DeleteDatalog(conn, datalog);
return result;
}
}
21 changes: 6 additions & 15 deletions client/Boundaries/Boundaries/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@ internal class Program
{
private static async Task Main(string[] args)
{
if (args.Length < 3)
if (args.Length < 2)
{
Console.WriteLine(
"Usage \"dotnet run filename-for-dexpi-in-rdf \"label-of-internal-componenet\" iri-of-border-component ... iri-of-border-component ");
Console.WriteLine(
"For example \"dotnet run ../../../rml/pandid.trig \"T4750\" https://assetid.equinor.com/plantx#Nozzle-12 https://assetid.equinor.com/plantx#Nozzle-8 https://assetid.equinor.com/plantx#PlateHeatExchanger-1 https://assetid.equinor.com/plantx#ReciprocatingPump-1");
"For finding a commissioning package from boundary use f.ex. \"dotnet run ../../../rml/pandid.trig \"T4750\" https://assetid.equinor.com/plantx#Nozzle-12 https://assetid.equinor.com/plantx#Nozzle-8 https://assetid.equinor.com/plantx#PlateHeatExchanger-1 https://assetid.equinor.com/plantx#ReciprocatingPump-1\"");
Console.WriteLine("For finding directly connected equipemnt use f.ex. \"dotnet run ../../../rml/pandid.trig \"P4711\"");
return;
}

Expand All @@ -25,21 +26,11 @@ private static async Task Main(string[] args)
}

var borderComponentIris = args.Skip(2).Select(iri => new IriReference(iri)).ToArray();
var datalogCreator = new DatalogCreator();
var datalog = datalogCreator.CreateBoundaryDatalogRule(internalComponentLabel, borderComponentIris);
var conn = RdfoxApi.GetDefaultConnectionSettings();
await RdfoxApi.LoadDatalog(conn, datalog);

var data = File.ReadAllText(dexpiFilePath);
await RdfoxApi.LoadData(conn, data);

var queryString = datalogCreator.CreateCommissioningSparqlQuery();
var result = await RdfoxApi.QuerySparql(conn, queryString);
var result = borderComponentIris.Any() ?
await DexpiApi.GetCommissioningPackage(internalComponentLabel, borderComponentIris, dexpiFilePath)
: await DexpiApi.GetConnectedEquipment(internalComponentLabel, dexpiFilePath);
Console.WriteLine("Commissioning package:");
Console.WriteLine(result);

await RdfoxApi.DeleteData(conn, data);
await RdfoxApi.DeleteDatalog(conn, datalog);

}
}

0 comments on commit 856f913

Please sign in to comment.