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:
ARCis the top-level package wrapper around a dataset graph and its administrative metadata.- A
Datasetgroups process graphs, nested datasets, data files, data contexts, and administrative information. - A
ProcessconnectsSampleandDatainput/output nodes. - A
Recipedescribes what the process executes. - An
Annotationannotates datasets, process parameters, input/output nodes, and protocol components. - A
DataContextdescribes data files and selected data fragments with additional structural and contextual information. Agent,Organization, andScholarlyArticlecarry administrative profile metadata, whileARCadds package-level persistence, project-configured storage, and metadata handling.additionalType,additionalProperty, andDynamicObjcarry domain-specific extensions without changing the shared graph shape.
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
dotnet add package ProcessCore
#r "nuget: ProcessCore" // in scripts
open ProcessCore
let d = Dataset("MyDataset")
JavaScript
dotnet add package ProcessCore.Javascript
#r "nuget: ProcessCore.Javascript" // in scripts
open ProcessCore
let d = Dataset("MyDataset")
Recommended Path
- ARC Layer shows package-level metadata, explicit YAML/XLSX persistence, and
.arc/project.yml-configured workspaces. - Creating A Dataset builds a graph from F# objects.
- Decorations shows how to add domain specificity through typed annotations and
DynamicObjoverflow fields. - Reading And Writing YAML loads profile-shaped examples and writes inline or indexed YAML.
- Querying Process Graphs traverses upstream, downstream, and connected context.
- Fragment Selector Providers makes file fragments first-class in traversal.
- Using DataContext describes Datamap entries and shows how to combine them with process annotations.
- Tabular Views edits process graphs through ISA-like table projections.
- 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 |
|
Use a project-configured workspace |
|
Add application-specific project codecs |
|
Build a process graph in code |
|
Add domain-specific meaning |
|
Load ARC/profile-shaped YAML |
|
Validate stricter core-shaped YAML |
|
Ask provenance questions |
|
Work with file fragments |
|
Use Datamap context in queries |
|
Edit as rows and columns |
|
Understand surprising traversal behavior |
Node canonicalization, back-edges, and explicit process scopes |
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
ProcessCore