HiLang 2.5.50

dotnet add package HiLang --version 2.5.50
                    
NuGet\Install-Package HiLang -Version 2.5.50
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="HiLang" Version="2.5.50" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="HiLang" Version="2.5.50" />
                    
Directory.Packages.props
<PackageReference Include="HiLang" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add HiLang --version 2.5.50
                    
#r "nuget: HiLang, 2.5.50"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package HiLang@2.5.50
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=HiLang&version=2.5.50
                    
Install as a Cake Addin
#tool nuget:?package=HiLang&version=2.5.50
                    
Install as a Cake Tool

HiLang

HiLang is a minimal high-level language to describe the schema of a domain, taking inspiration from protobuf (.proto models) for hierarchical structures and SQL DML for entities, relations and views.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on HiLang:

Package Downloads
Hiperspace.SQL

Package Description

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.5.50 119 4/24/2026
2.5.47 112 4/15/2026
2.5.43 304 4/1/2026
2.5.39 3,516 3/20/2026
2.5.35 857 2/27/2026
2.5.33 4,147 2/14/2026
2.5.32 6,016 1/30/2026
2.5.29 7,378 1/17/2026
2.5.28 9,093 12/31/2025
2.5.26 10,112 12/21/2025
2.5.21 12,309 12/10/2025
2.5.18 14,364 12/3/2025
2.5.8 13,854 11/15/2025
2.5.2 13,873 11/6/2025
2.5.1 13,852 10/23/2025
2.5.0 13,854 10/20/2025
2.4.6 13,864 9/23/2025
2.4.4 13,947 8/7/2025
2.4.2 13,826 7/28/2025
2.4.0 13,851 7/10/2025
Loading failed

https://www.cepheis.com/hiperspace/20260424
# 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](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](https://www.finos.org/common-domain-model) 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](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.