BioFSharp.ArcIR
0.3.0
dotnet add package BioFSharp.ArcIR --version 0.3.0
NuGet\Install-Package BioFSharp.ArcIR -Version 0.3.0
<PackageReference Include="BioFSharp.ArcIR" Version="0.3.0" />
<PackageVersion Include="BioFSharp.ArcIR" Version="0.3.0" />
<PackageReference Include="BioFSharp.ArcIR" />
paket add BioFSharp.ArcIR --version 0.3.0
#r "nuget: BioFSharp.ArcIR, 0.3.0"
#:package BioFSharp.ArcIR@0.3.0
#addin nuget:?package=BioFSharp.ArcIR&version=0.3.0
#tool nuget:?package=BioFSharp.ArcIR&version=0.3.0
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 | Versions 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. |
-
.NETStandard 2.0
- FSharp.Core (>= 10.1.302)
- System.Text.Json (>= 10.0.3)
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.