Release 29th March 2025
Change Control note --version 2.2.0
Overview
This release introduces transitive edges, which extend the Graph model provided by Node
and Edge
views to include transitive traversal of an entire graph without the need for recursive queries of esoteric query languages and integrated with the data views provided by Hiperspace
. Graph.TransitiveEdge
encapsulates all the Edges that can be projected as a Transitive Edge using a simple set of rules.
Transitive Edge blog and Enterprise Transitive Edge goes into the details of our model of Transitive Edge
, but the graph-automorphic view is that a Transitive Edge
encapsulates all the edges between nodes and allows the user to focus on the ends rather than the intermediate steps between them, and view the data as relations using commodity business intelligence software without esoteric graph query languages.
Hiperspace
The Hiperspace package includes the additional Graph
package types
Name | ░ | Notes |
---|---|---|
GraphFunctions | static functions that can be sued directly, or via import in a .hilang schema | |
Route | Value type that defines name and rules for projecting Edge as Transitive Edge and extending to all related nodes |
|
Rule | The rules for matching {From node type, edge type, to node type} Edges, to the transititive edge projection |
SubSpace
SubSpace
includes an additional viewSetSpace
TransitiveEdges
that includes all elements that implement this viewFindPaths
inteface function provides a method that matches theGraph.GraphFunctions.Paths
function, but in a way that domain spaces can send the graph search to a server for parallel execution on computers that have many CPU cores.
Fix PartitionSpace and GenerationSpace
These two Space interceptors provide the partitioning of data by hash-bucket and date-range, but fault in the implementation of state-machine to implement IAsyncEnumerable<>
in .NET9, can result in the map/reduce channel being disposed before the last message is processed (warning to the wise: don't use AI generated suggestions without considering the stress-environments that it doesn't have a clue about)
Hilang
The HiLang schema compiler has been enhanced to include the additional {function, value,view,segment} declarations for features of Hiperspace
.
There are three ways that an element can project a view in Hilang:
entity Person = Node (From = member/this, To = member/this, Name="value", TypeName = "Person")
where each member of the view is mapped to a specific member of the elemententity Person = Node()
where the view members are automatically matched by name with members of the elemententity Name = View_Name = member
This language element has been enhanced to include a set of values e.g. the set returned fromTransitativeEdge
function
Hiperspace.SQL
The Hiperspace.SQL already includes the ability to access deep structure methods like SELECT p.Father.Name AS Father FROM Persons AS p WHERE p.Name = :parameter;', but now also allows deep structure to members to be used in
FROM` clauses to join to segments and sets within each row.
e.g. Person
has an extension segment MotherChild
and property AllRelatives
that yields a HashSet<TransitiveEdge>
, which can now be joined to in a SQL query.
select p.Name as Person,
r.To.Name as Relation,
r.TypeName as Relationship,
r.Length as Length,
r.Width as Width
from Persons as p,
p.AllRelatives as r
where p.Name = :name;
select p.Name as Parent, c.Name as Child
from Persons as p,
p.MotherChild as c
where p.Name = :name;
Release 14th April 2025
Release 29th March 2025
Release 5th March 2025