Logo ProcessCore

ARC Core User Guide

ProcessCore is the in-memory F# library for building, decorating, reading, querying, and editing ARC Core process graphs and ARC package metadata.

The ARC Core model is intentionally compact:

The pages in this section are user-facing implementation guides.

For normative field definitions, use the specification index. These project pages focus on using the F# library.

For API reference, see the API docs.

Loading the library

The ProcessCore library is available as a NuGet package for .NET and currently a NuGet package for JavaScript transpilation.

.NET

Nuget
dotnet add package ProcessCore
#r "nuget: ProcessCore" // in scripts

open ProcessCore

let d = Dataset("MyDataset")

JavaScript

Nuget
dotnet add package ProcessCore.Javascript
#r "nuget: ProcessCore.Javascript" // in scripts

open ProcessCore

let d = Dataset("MyDataset")

Recommended Path

  1. ARC Layer shows package-level metadata, explicit YAML/XLSX persistence, and .arc/project.yml-configured workspaces.
  2. Creating A Dataset builds a graph from F# objects.
  3. Decorations shows how to add domain specificity through typed annotations and DynamicObj overflow fields.
  4. Reading And Writing YAML loads profile-shaped examples and writes inline or indexed YAML.
  5. Querying Process Graphs traverses upstream, downstream, and connected context.
  6. Fragment Selector Providers makes file fragments first-class in traversal.
  7. Using DataContext describes Datamap entries and shows how to combine them with process annotations.
  8. Tabular Views edits process graphs through ISA-like table projections.
  9. Graph Identity, Back-Edges, And Scope explains the invariants behind shared nodes and scoped traversal.

What To Use When

Task

Start With

Create or persist an ARC package

ARC, ArcPath, Write, Update, ARC.fromYamlString

Use a project-configured workspace

.arc/project.yml, ARC.load, arc.Write, arc.Update

Add application-specific project codecs

DatasetCodec, CodecRegistry, ARC.loadProject, arc.WriteProject

Build a process graph in code

Dataset, Process, Sample, Data

Add domain-specific meaning

AdditionalType, AddAdditionalProperty, AddParameterValue, DynamicObj.SetProperty

Load ARC/profile-shaped YAML

ProcessCore.Yaml.Dataset.fromYamlString false

Validate stricter core-shaped YAML

ProcessCore.Yaml.Dataset.fromYamlString true

Ask provenance questions

AllProcesses, UpstreamNodes, DownstreamAnnotations, PathsThrough

Work with file fragments

Data.Selector, Data.SelectorFormat, RegisterFragmentSelectorProvider

Use Datamap context in queries

DataContextsForPath, DataContextsCoveringData, ExplicationEquals

Edit as rows and columns

dataset.Tables from ProcessCore.Table

Understand surprising traversal behavior

Node canonicalization, back-edges, and explicit process scopes

namespace ProcessCore
val d: Dataset
Multiple items
type Dataset = inherit DynamicObj new: identifier: string * ?title: string * ?description: string * ?additionalType: string * ?license: string * ?datePublished: string * ?dateCreated: string * ?dateModified: string * ?processes: Process seq * ?hasPart: Dataset seq * ?dataFiles: Data seq * ?agents: Agent seq * ?citations: ScholarlyArticle seq * ?dataContexts: DataContext seq * ?additionalProperty: Annotation seq -> Dataset member AddAdditionalProperty: pv: Annotation -> unit member AddAgent: agent: Agent -> unit member AddCitation: article: ScholarlyArticle -> unit member AddDataContext: dataContext: DataContext -> unit member AddDataFile: data: Data -> unit member AddPart: child: Dataset -> unit member AddProcess: proc: Process -> unit member AllAgents: unit -> ResizeArray<Agent> ...
<summary> Container and context for data, processes, administrative metadata, and datamap entries. schema.org/Dataset </summary>

--------------------
new: identifier: string * ?title: string * ?description: string * ?additionalType: string * ?license: string * ?datePublished: string * ?dateCreated: string * ?dateModified: string * ?processes: Process seq * ?hasPart: Dataset seq * ?dataFiles: Data seq * ?agents: Agent seq * ?citations: ScholarlyArticle seq * ?dataContexts: DataContext seq * ?additionalProperty: Annotation seq -> Dataset

Type something to start searching.