Release 24th April 2026
Change Control note Hiperspace --version 2.5.50 HiLang --version 2.5.50
Overview
This release is a minor update to support the presentation Cube data in Graph views with Hiperspace.DB, and minor updated to external references.
Fact enhancement
A specific ICubeFact<TFact> inteface has been added to include public IEnumerable<TFact> DrillDown(Type dimension); for generic drilldown from one Cube to the next level when viewed in Hiperspace.DB.
The ICubeDimension interface now has a GetCube() function to get the named ICubeFact for use with a PivotTable view of the Cube through Hiperspace.DB.
SubSpace enhancement
SubSpaceParameters has been enhanced to include TransactionalPolicy
| ┃ | Policy | ┃ | Notes | ┃ |
|---|---|---|---|---|
| ┃ | NotTransactional | ┃ | Indicates that the Space is not transactional | ┃ |
| ┃ | Transactional | ┃ | Specifies that a new transaction should be started | ┃ |
| ┃ | ParentTransaction | ┃ | Indicates that the space participates in the transaction of its parent space | ┃ |
| ┃ | ContinueTransaction | ┃ | Transaction is a continuation of a prior (long-running) transaction | ┃ |
Hilang enhancement
Added support sdupport for Cube aggregation of views in addition to {entity, segment, aspect}.
Consider the model where there are seperate entitites for {FX, FI, EQ} Trades that have different values for Entities, Bonds, Foreign Exchange, but can all be viewed as a Trade that has a booking_id, and a valuation (NPV). This change adds support for Cube analytics of views combining all trades in all entities that provide the view.
type Banking.TradeBase
(
Id : String
)
{
Book : Banking.Book,
@CubeMeasure(Aggregate.Sum)
NPV : Decimal
};
@CubeFact
view Banking.Trade : Banking.TradeBase;
entity Banking.FI.Trade : Banking.TradeBase = Banking.Trade();
entity Banking.FX.Trade : Banking.TradeBase = Banking.Trade();
entity Banking.EQ.Trade : Banking.TradeBase = Banking.Trade();
@CubeDimension
entity Banking.Book ( Id : String ) [ Trades : Banking.Trade (Book = this)];
When the schema is compiled with HiLang, Banking.Book has an additional property Trade_Cube that aggregates NPV over the full set trades that can be viewed as a Banking.Trade.
Enhanced List support
Keys in a hilang element can be:
- A Value including value elements defined in Hilang and primatives (e.g. String, Int32, Guid, etc)
- A Reference to an entity (only the Key-part of the referened entity is serialised)
- A List of Values (e.g. List<String>) but not a Set<> since a Set order can change
Key support for List<> in keys has been extended to include Keys of Lists of Values of Lists of Values, that can be placed in a SortedSet. Examples include FINIOS CDM that supports complex identifiers that include list of identifiers
value CDM.PartyIdentifier ( identifier : String );
entity CDM.Party ( partyId : CDM.PartyIdentifier );
value CDM.PriceQuantity;
value CDM.AssetIdentifier
(
identifer : String,
version : Int32
);
value CDM.Identifer
(
assignedIdentifier : List<CDM.AssetIdentifier>,
issuerReference : CDM.Party,
issuer : String
);
entity CDM.TradeLot
(
lotIdentifier : List<CDM.Identifer>
)
{
priceQuantity : List<CDM.PriceQuantity>
};
In this example CDM.TradeLot has a key that is a List<CDM.Identifer> which itself contains a List<CDM.AssetIdentifier>. Lists are supported in HiLang models since the they can be unambiguously serialised to a store and retrived later. NB CDM.Identifer contains a reference to CDM.Party which is a entity so only the key is stored, with CDM.Party retrived only when needed.