BioFSharp.ArcIR 0.3.0

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

BioFSharp.ArcIR

BioFSharp.ArcIR is the target-neutral graph core used by BioFSharp metadata adapters. It contains validated absolute IRI identities, a normalized property graph, explicit lossless graph operations, structural validation, and canonical, schema-versioned JSON persistence.

The package does not reference INSDC schemas, crawler or SQLite code, SSSOM, or any output target. Source-specific ingestion belongs in adapter packages such as BioFSharp.INSDC.ArcIR.

All independently curatable elements are keyed by stable Iri identities. Ontology term definitions are shared through ArcIR.Terms; assertions reference those definitions rather than embedding copies.

Immutable JSON states

ArcIRJson reads and writes canonical .arcir.json state artifacts. Version 1.0 uses deterministic ordinal key ordering, invariant scalar encodings, UTF-8 without a byte-order mark, and a fixed LF layout. Collection keys are the authoritative identities, so redundant id fields are not written. The bundled schema/arcir-1.0.schema.json describes the complete wire format.

let revision = ArcIRJson.writeNew "arcir/states/state-id.arcir.json" graph

let location = ArcJsonLocation.PropertyValue(objectId, assertionId)
let fragment = revision |> Result.map (fun artifact -> ArcIRJson.fragmentRef artifact location)

writeNew publishes through a same-directory temporary file and never replaces an existing state path. The returned ArtifactRevision binds that path to the SHA-256 digest of the exact canonical bytes.

ArcJsonLocation covers terms, objects, assertions, annotations, relations, and their atomic value occurrences. ArcIRJson.selector converts a location to an RFC 6901 URI-fragment JSON Pointer; resolveFragment verifies the artifact digest before resolving it. Scalar values do not gain model IDs, and lists remain one atomic assertion value.

Artifact revisions and fragment selectors designate persisted occurrences. They do not add history or provenance to ArcIR; downstream ARC integrations relate these designated inputs and outputs through the ARC's native process model.

Selected literal-to-term companions

ArcIRJson.parseLocation is the inverse of ArcIRJson.selector for every typed ArcIR location. It validates RFC 6901 URI-fragment escaping and rejects pointers to fields that are not represented by ArcJsonLocation.

LiteralMapping.apply adds a registered term as the deterministic semantic companion of one exact string-literal occurrence while retaining the original literal:

let source =
    match ArcIRJson.parseLocation selector with
    | Ok location -> location
    | Error errors -> failwithf "Invalid ArcIR selector: %A" errors

let result =
    LiteralMapping.apply
        { Source = source
          Literal = "control"
          Target = Iri.Create "http://purl.obolibrary.org/obo/OBI_0000220" }
        graph

Supported sources are object and relation string properties plus literal-valued object, relation, and nested property annotations. Lists and non-string scalars remain atomic and unsupported. A compatible replay returns AlreadyPresent and the same output location; missing occurrences, changed literals, unregistered targets, wrong value kinds, invalid graphs, and deterministic identity conflicts return typed failures without a partially changed graph. SSSOM selection and ARC process provenance remain application concerns and are not dependencies of this core transformation.

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 BioFSharp.ArcIR:

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.3.0 143 8/28/2026

Repository stabilization, target-neutral ArcIR extraction, immutable ArcIR state persistence, additive semantic enrichment, complete F1 accounting, and the selected-literal curation primitive.
- Added the packable, target-neutral `BioFSharp.ArcIR` `netstandard2.0` package with validated absolute IRI identities, normalized identity-keyed graph collections, shared term definitions, explicit add/upsert/merge operations, validation, and persistence contracts.
- Added canonical `.arcir.json` 1.0 persistence with a packaged JSON Schema, deterministic UTF-8/LF output, strict versioned decoding, invariant tagged values, authoritative identity keys, atomic create-new state publication, and SHA-256 artifact revisions.
- Added typed RFC 6901 fragment locations for every addressable graph entity and atomic value occurrence, including relation-property annotations, plus digest-verified resolution that keeps scalar values ID-less and provenance outside the graph state.
- Added strict inverse parsing for supported ArcIR JSON selectors and the immutable `LiteralMapping.apply` transformation for mapping one exact string occurrence to an already registered term while preserving the source literal.
- Added format-neutral additive semantic mapping and a `PolyglotSSSOM` adapter that preserves complete candidate claims, resolves only declared CURIEs, and leaves mapping selection and provenance to the integrating application.
- Added deterministic occurrence-level F1 accounting and resolvable source/output designations for all eight supported INSDC entities plus supplementary paper and count metadata.
- Removed the unused `BioFSharp` umbrella-package dependency and replaced the remaining preview dependency with stable `PolyglotSSSOM` `0.1.0`.
- Converted `BioFSharp.INSDC.ArcIR` into an INSDC-specific F1 adapter. All eight entity converters and supplementary paper/count ingestion now mint deterministic assertion/relation identities and consume the neutral core without retaining the proof-of-concept model shapes.
- Added a core-only test project and adapter regression coverage for conflict reporting, reference validation, deterministic identities, complete term resolution, and deterministic eight-entity fixture conversion.
- Limited the nested FAKE solution build to one MSBuild node, preventing runaway worker fan-out and silent process-limit failures in captured Windows builds.
- Made package creation reuse the already verified Release build outputs instead of rebuilding projects and risking locked output assemblies.
- Added dependency-vulnerability and generated-artifact drift gates to the full FAKE test path; generators now produce deterministic committed output.
- Added a versioned, forward-migrated SQLite schema with explicit foreign-key modes, transactional public writes, and exact fixture round-trip coverage for all five stored entities.
- Hardened crawler cancellation, bounded retries, strict partial-failure handling, upstream parsing, atomic writes, validation, and resume behavior while preserving injectable offline fetch seams.
- Split the test suite into focused IO, ArcIR, SQLite, crawler, and crawler-hardening modules; refreshed package-boundary and ArcIR terminology documentation; removed the stale local fsdocs publication path.
- Removed the unused structural-decompilation overlay from the proof-of-concept ArcIR package; its explicit converters remain the current mapping surface.