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.

Release 24th April 2026 Release 15th April 2026 Release 1st April 2026
Copyright © Cepheis 2024