This library provides the definitions and reference implementation for the fundamental ValOS Resources and ValOS Events systems.

This document is part of the library workspace @valos/raem (of domain @valos/kernel) which has the description: `ValOS Resources And Events Model (ValOS-RAEM) API, Schema`

This library provides the definitions and reference implementations for the fundamental ValOS Resources and ValOS Events systems.

A ValOS Resource resource represents a well-defined part of the world. It has a well-defined state at each particular moment in time.

A ValOS Event event represents a dynamic change to a resource by describing the change from previous to subsequent resource states at a particular time.

The interplay of these distinct yet interwoven systems forms the foundation of the Valaa Open System.

§ @valos/raem provides ValOS Resources And Events Model `ValOS-RaEM` (/væləsˌɹɛem/)

This library provides:

§ ValOS URLs, urn:valos and raw id's

ValOS URL is used to specify a parameterized location reference to a ValOS Resource. It has two major parts separated by the URI fragment separator `#`: *chronicle URI* part and a *local reference* part.

*Chronicle URI* identifies the target authority and chronicle of the reference. It corresponds to scheme, hierarchical and query parts of an URI; everything but the fragment. Its precise structure and interpretation is specified by the scheme but typically the scheme and hierarchical part identify an authority and query part identifies a chronicle.

*Local reference* identifies a particular resource inside a chronicle but also contains optional *coupling*, *ghost path*, *lens* (and other) parts which further parameterize the reference itself. It corresponds to the URI fragment part but has sub-structure which is specified in this document.

valos-url ┌────────────────────────────────────────────────┴─────────────────────────────────────────────────┐ chronicle-uri resource-ref ┌───────────────────────┴────────────────────────┐ ┌──────────────────────┴────────────────────────┐ resource-uri ref-params ┌──────────────────────────────┴────────────────────────────────┐ ┌───────────────┴───────────────┐ authority-uri chronicle-id resource-id coupling lens ┌────────────────┴────────────────┐┌─────┴──────┐ ┌─────┴──────┐ ┌───────┴────────┐ ┌─────┴──────┐

valosp://example.com:123/dev-stage/~raw:abcd-efgh/#987b-72...8263?=coupling=relations&lens=ROOT_LENS

└─────┬──────┘ └──────────────┬────────────────┘ nss q-component └──┬──┘ └──────┬──────┘└───────────┬────────────┘└───────────────────────┬────────────────────────┘ scheme authority path fragment └───────────┬────────────┘ hier-part

§ Curious dualisms of *chronicle URI* and *local reference*

The division between chronicle URI and local reference has many curious dualistic qualities: backend vs. frontend, hierarchical vs. flat, routing vs. computation, extensible vs. fixed, absolute vs. contextual, coarse vs. granular, self-contained vs. part-of-a-whole.

Chronicle URI domain is backend, local reference domain is front-end

ValOS backends deal with the indivisible chronicles and thus don't care about the particularities of local references to individual resources. This corresponds to how in web architecture URI fragments are not sent to backend with resource requests. Conversely, ValOS frontends don't care where a resource comes from once it has been loaded, but about its identity, relationships and the parameters of those relationships. This is reflected in how frontend code regularily drops the chronicle URI.

Chronicle URI structure is specified by the scheme, local reference structure is specified by ValOS

By the nature of its distributed event sourcing architecture ValOS focuses heavily on the frontend. The cross-compatibility between components is driven by how new backends can integrate and talk with existing front-end clients. This is facilitated by front-end spindle systems which enables new ValOS URI schemes to specify new routing solutions and fundamentally new backend infrastructures, as long as said infrastructures can route ValOS event streams to clients. This corresponds to how ValOS doesn't specify how a *chronicle URI* identifies and locates chronicles and authorities but leaves it to the scheme specifications and their reference implementations of frontend spindles.

Chronicles URI's identify self-contained wholes, resource references need their context

Web architecture specifies that all or none of the document is retrieved. This corresponds to the behaviour of ValOS chronicles which are always retrieved as a whole. Chronicle URI's contain all and nothing but the components which identify web resources, that is everything but the fragment.

Etc.

§ resource-id

§ VRL

Javascript class which implements ValOS reference URI and associated operations.

§ The VRaem valospace namespace of the library ontology of @valos/raem

The 'VRaem' namespace describes the @valos/raem library public API.

§ @valos/raem IRI prefixes

Prefix IRI
rdf http://www.w3.org/1999/02/22-rdf-syntax-ns#
rdfs http://www.w3.org/2000/01/rdf-schema#
xsd http://www.w3.org/2001/XMLSchema#
owl http://www.w3.org/2002/07/owl#
dc http://purl.org/dc/elements/1.1/
VRaem https://valospace.org/raem/0#
VKernel https://valospace.org/kernel/0#
VState https://valospace.org/state/0#
VLog https://valospace.org/log/0#
VValk https://valospace.org/valk/0#

§ VRaem fabric classes The class of classes which are defined by the ValOS kernel domain ontologies.

rdfs:subClassOf description

§ VRaem fabric properties The class of properties which are defined by the ValOS kernel domain ontologies.

rdfs:domain rdfs:range

§ VRaem valospace resource types The class of all valospace types. The instances of valospace types are called valospace resources and are the main valos ecosystem building block.Only valospace resources can appear as a subject in valospace resource and event triple graphs.

VRevdoc:brief rdfs:subClassOf

§ VRaem valospace fields The class of all valospace resource field identifiers.Only the instances of this class can appear as the predicate in valospace triple graphs. All valospace fields have VState:Type or one of its sub-classes as their rdf:domain.

rdfs:domain rdfs:range rdf:type rdfs:subPropertyOf VState:coupledToField

§ VRaem field resolvers The class of all resolver names. Resolvers are verbs which are used for resolving generated properties.

Comment rdf:type

§ VRaem remaining vocabulary

rdf:type rdfs:subClassOf

§ VRaem JSON-LD context term definitions

Term Definition @id @type @container
restriction
@base https://valospace.org/raem/0#