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
SubSpaceincludes an additional viewSetSpaceTransitiveEdgesthat includes all elements that implement this viewFindPathsinteface function provides a method that matches theGraph.GraphFunctions.Pathsfunction, 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 = memberThis language element has been enhanced to include a set of values e.g. the set returned fromTransitativeEdgefunction
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 23rd October 2025
Release 20th October 2025
Release 23rd September 2025