PolyglotSSSOM 0.1.0

dotnet add package PolyglotSSSOM --version 0.1.0
                    
NuGet\Install-Package PolyglotSSSOM -Version 0.1.0
                    
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="PolyglotSSSOM" Version="0.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="PolyglotSSSOM" Version="0.1.0" />
                    
Directory.Packages.props
<PackageReference Include="PolyglotSSSOM" />
                    
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 PolyglotSSSOM --version 0.1.0
                    
#r "nuget: PolyglotSSSOM, 0.1.0"
                    
#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 PolyglotSSSOM@0.1.0
                    
#: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=PolyglotSSSOM&version=0.1.0
                    
Install as a Cake Addin
#tool nuget:?package=PolyglotSSSOM&version=0.1.0
                    
Install as a Cake Tool

PolyglotSSSOM

PolyglotSSSOM is a cross-runtime YAML-metadata-plus-TSV implementation of the Simple Standard for Sharing Ontological Mappings (SSSOM). It is written once in F# and built for .NET, JavaScript, and Python.

The current 0.1.0-alpha.1 line is an implementation prerelease. Its portable domain model and strict, version-aware TSV/YAML codec are available across all three target runtimes. The exact stable-v1.0 and pinned-v1.1 specification sources are documented in spec/UPSTREAM.md.

Requirements

  • .NET SDK 10.0.300 feature band
  • Node.js 22 or newer
  • Python 3.12 or newer
  • uv

The shipped NuGet library targets netstandard2.0; .NET 10 is required only by the Fable build toolchain.

Build and test

On Windows use build.cmd; on macOS/Linux use ./build.sh.

build.cmd                  run the shared suite on .NET, Node, and Python
build.cmd BuildAll         build/transpile all three libraries
build.cmd Pack             create NuGet, npm, and wheel artifacts
build.cmd TestPackages     pack and run isolated package-consumer smokes

Generated output is written below artifacts/ and is never committed.

Package identities

  • NuGet: PolyglotSSSOM
  • npm: @nfdi4plants/polyglot-sssom
  • PyPI: polyglot-sssom (import polyglot_sssom)

All three packages expose the portable mapping-set, mapping, lexical-value, extension, descriptor, CURIE, diagnostic, and SssomCodec APIs. Optional scalars remain absent and multivalued slots use empty arrays for zero values. The codec reads embedded or external metadata, validates v1.0 and the pinned v1.1 draft, and writes deterministic canonical embedded SSSOM/TSV.

Authoring mappings

The lexical factories cover the common entity-to-entity path without exposing the complete positional constructors. AddMapping preserves an optional record ID for general v1.0/v1.1 authoring. AddMappingWithRecordId assigns a caller-owned native v1.1 ID atomically; PolyglotSSSOM never invents one.

F#:

let document =
    SssomDocument.Create(
        "https://example.org/mappings",
        "https://example.org/license"
    )

document.Metadata.EnsurePrefix("ex", "https://example.org/")
document.Metadata.EnsurePrefix("uuid", "urn:uuid:")

let mapping =
    Mapping.CreateEntityMapping(
        "ex:source",
        "skos:exactMatch",
        "ex:target",
        "semapv:ManualMappingCuration"
    )

document.AddMappingWithRecordId("urn:uuid:example", mapping)
let content = SssomCodec.EncodeCanonical document

JavaScript:

const document = SssomDocument.Create(
  "https://example.org/mappings",
  "https://example.org/license"
);
document.Metadata.EnsurePrefix("ex", "https://example.org/");
document.Metadata.EnsurePrefix("uuid", "urn:uuid:");

const mapping = Mapping.CreateEntityMapping(
  "ex:source",
  "skos:exactMatch",
  "ex:target",
  "semapv:ManualMappingCuration"
);
document.AddMappingWithRecordId("urn:uuid:example", mapping);
const content = SssomCodec.EncodeCanonical(document);

Python:

document = sssom.SssomDocument.Create(
    "https://example.org/mappings",
    "https://example.org/license",
)
document.Metadata.EnsurePrefix("ex", "https://example.org/")
document.Metadata.EnsurePrefix("uuid", "urn:uuid:")

mapping = sssom.Mapping.CreateEntityMapping(
    "ex:source",
    "skos:exactMatch",
    "ex:target",
    "semapv:ManualMappingCuration",
)
document.AddMappingWithRecordId("urn:uuid:example", mapping)
content = sssom.SssomCodec.EncodeCanonical(document)

Call Clone() before editing when the imported document must remain available unchanged for its original round trip. Find, replace, and remove operations use the stable record_id; full document correctness remains explicit through SssomCodec.Validate or canonical encoding.

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 PolyglotSSSOM:

Package Downloads
BioFSharp.INSDC.ArcIR

INSDC-specific F1 adapter that maps BioProject, Study, Sample, Experiment, Run, Analysis, Submission, and Receipt records into the target-neutral BioFSharp.ArcIR graph.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.0 135 8/28/2026
0.1.0-alpha.1 74 8/26/2026

See RELEASE_NOTES.md in the package for the complete release notes.