UJG / Editor's Draft /
GitHub
Table of Contents
  • 1Overview
  • 2Normative Artifacts
  • 3Terminology
  • 4Attachment Model
  • 5Non-Goals
  • 6Runtime Attribution Research Notice
  • 7Ontology
  • 8JSON-LD Context
  • 9Validation
  • 10Minimal Example
W3C Community Group Draft Report

Actor

incubating

Status of this Document

This report was published by the User Journal Graph Community Group . It is not a W3C Standard nor is it on the W3C Standards Track. Please note that under the W3C Community Contributor License Agreement (CLA) there is a limited opt-out and other conditions apply. Learn more about W3C Community and Business Groups .

Last Update
2026-06-18
Editors
  • Seva Dolgopolov
Group
User Journal Graph Community Group
Repository
View Source
License
W3C-Software-and-Document

1. Overview

This optional module defines a minimal graph-native vocabulary for attaching actor responsibility and eligibility metadata to foundational Graph nodes.

Without an actor primitive, implementations tend to hide responsibility, approval eligibility, or participant metadata in opaque payloads and extensions. That makes governance and human-in-the-loop questions difficult to validate, query, or preserve across tools.

This first version is intentionally small. It declares Actor nodes and two references for Graph metadata. It does not define identity systems, accounts, enforcement, provenance, or runtime attribution.

2. Normative Artifacts

This module is published through the following artifacts:

  • actor.ttl: ontology, published at https://ujg.specs.openuji.org/ed/ns/actor

  • actor.context.jsonld: JSON-LD term mappings, published at https://ujg.specs.openuji.org/ed/ns/actor.context.jsonld

  • actor.shape.ttl: SHACL validation rules, published at https://ujg.specs.openuji.org/ed/ns/actor.shape

Examples in this page compose the shared baseline context https://ujg.specs.openuji.org/ed/ns/context.jsonld with the Actor context.

3. Terminology

  • Actor: An addressable participant, role-like entity, system, organization, or other responsible party represented as a Core Node.

  • Responsible actor: The actor responsible for ownership or stewardship of a Graph node.

  • Eligible actor: An actor described as eligible to perform, approve, or trigger a transition-like Graph edge.

4. Attachment Model

The module introduces two interoperable attachments:

  • actor:responsibleActorRef links an allowed Graph node to one Actor.

  • actor:eligibleActorRefs links an allowed transition-like Graph edge to one or more Actors.

The allowed host nodes are intentionally limited.

responsibleActorRef is allowed on:

  • Journey

  • State

  • CompositeState

  • Transition

  • OutgoingTransition

  • OutgoingTransitionGroup

eligibleActorRefs is allowed on:

  • Transition

  • OutgoingTransition

A Graph node without Actor references remains fully valid and traversable. Consumers MAY ignore this module and still process the graph.

5. Non-Goals

Actor does not define:

  • authentication

  • authorization enforcement

  • IAM groups

  • user accounts

  • PII fields

  • org charts

  • legal accountability

  • runtime access-control APIs

  • delegation workflows

  • cryptographic signing

  • traversal semantics

  • transition eligibility evaluation

Actor v0 also does not attach actors to runtime nodes, journey stacks, experience annotations, opaque extension payloads, or nodes defined by other optional modules.

6. Runtime Attribution Research Notice

Runtime actor attribution is intentionally not standardized in Actor v0.

Runtime Evidence can identify an observing actor for execution-level or event-level runtime metadata. Open questions such as observed performer, uploader, or domain subject remain outside Actor v0 and should stay implementation-specific or be carried in extensions until a future module defines them.

7. Ontology

The normative Actor ontology is defined below and is published at https://ujg.specs.openuji.org/ed/ns/actor.

turtle
@prefix ujg: <https://ujg.specs.openuji.org/ed/ns/core#> .
@prefix ujggraph: <https://ujg.specs.openuji.org/ed/ns/graph#> .
@prefix ujgactor: <https://ujg.specs.openuji.org/ed/ns/actor#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix dct: <http://purl.org/dc/terms/> .

<https://ujg.specs.openuji.org/ed/ns/actor#> a owl:Ontology ;
  rdfs:label "UJG Actor Editor's Draft Vocabulary"@en ;
  dct:description "UJG Actor ontology declaration" .

### Classes

ujgactor:Actor a owl:Class ;
  rdfs:subClassOf ujg:Node .

### Properties

ujgactor:responsibleActorRef a owl:ObjectProperty ;
  rdfs:domain [
    a owl:Class ;
    owl:unionOf (
      ujggraph:Journey
      ujggraph:State
      ujggraph:CompositeState
      ujggraph:Transition
      ujggraph:OutgoingTransition
      ujggraph:OutgoingTransitionGroup
    )
  ] ;
  rdfs:range ujgactor:Actor .

ujgactor:eligibleActorRefs a owl:ObjectProperty ;
  rdfs:domain [
    a owl:Class ;
    owl:unionOf (
      ujggraph:Transition
      ujggraph:OutgoingTransition
    )
  ] ;
  rdfs:range ujgactor:Actor .
@prefix ujg: <https://ujg.specs.openuji.org/ed/ns/core#> .
@prefix ujggraph: <https://ujg.specs.openuji.org/ed/ns/graph#> .
@prefix ujgactor: <https://ujg.specs.openuji.org/ed/ns/actor#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix dct: <http://purl.org/dc/terms/> .

<https://ujg.specs.openuji.org/ed/ns/actor#> a owl:Ontology ;
  rdfs:label "UJG Actor Editor's Draft Vocabulary"@en ;
  dct:description "UJG Actor ontology declaration" .

### Classes

ujgactor:Actor a owl:Class ;
  rdfs:subClassOf ujg:Node .

### Properties

ujgactor:responsibleActorRef a owl:ObjectProperty ;
  rdfs:domain [
    a owl:Class ;
    owl:unionOf (
      ujggraph:Journey
      ujggraph:State
      ujggraph:CompositeState
      ujggraph:Transition
      ujggraph:OutgoingTransition
      ujggraph:OutgoingTransitionGroup
    )
  ] ;
  rdfs:range ujgactor:Actor .

ujgactor:eligibleActorRefs a owl:ObjectProperty ;
  rdfs:domain [
    a owl:Class ;
    owl:unionOf (
      ujggraph:Transition
      ujggraph:OutgoingTransition
    )
  ] ;
  rdfs:range ujgactor:Actor .

8. JSON-LD Context

The normative Actor JSON-LD context is defined below and is published at https://ujg.specs.openuji.org/ed/ns/actor.context.jsonld.

json-ld
{
  "@context": {
    "@version": 1.1,

    "ujgactor": "https://ujg.specs.openuji.org/ed/ns/actor#",
    "actor": "https://ujg.specs.openuji.org/ed/ns/actor#",

    "Actor": "ujgactor:Actor",

    "responsibleActorRef": {
      "@id": "ujgactor:responsibleActorRef",
      "@type": "@id"
    },
    "eligibleActorRefs": {
      "@id": "ujgactor:eligibleActorRefs",
      "@type": "@id",
      "@container": "@set"
    }
  }
}
{
  "@context": {
    "@version": 1.1,

    "ujgactor": "https://ujg.specs.openuji.org/ed/ns/actor#",
    "actor": "https://ujg.specs.openuji.org/ed/ns/actor#",

    "Actor": "ujgactor:Actor",

    "responsibleActorRef": {
      "@id": "ujgactor:responsibleActorRef",
      "@type": "@id"
    },
    "eligibleActorRefs": {
      "@id": "ujgactor:eligibleActorRefs",
      "@type": "@id",
      "@container": "@set"
    }
  }
}

9. Validation

The normative Actor SHACL shape is defined below and is published at https://ujg.specs.openuji.org/ed/ns/actor.shape.

turtle
@prefix ujggraph: <https://ujg.specs.openuji.org/ed/ns/graph#> .
@prefix ujgactor: <https://ujg.specs.openuji.org/ed/ns/actor#> .
@prefix ujgactorshape: <https://ujg.specs.openuji.org/ed/ns/actor.shape#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

ujgactorshape:ActorShape a sh:NodeShape ;
  sh:targetClass ujgactor:Actor ;
  sh:nodeKind sh:IRI .

ujgactorshape:ResponsibleActorHostShape a sh:NodeShape ;
  sh:targetClass
    ujggraph:Journey,
    ujggraph:State,
    ujggraph:CompositeState,
    ujggraph:Transition,
    ujggraph:OutgoingTransition,
    ujggraph:OutgoingTransitionGroup ;
  sh:nodeKind sh:IRI ;

  sh:property [
    sh:path ujgactor:responsibleActorRef ;
    sh:class ujgactor:Actor ;
    sh:nodeKind sh:IRI ;
    sh:maxCount 1 ;
  ] .

ujgactorshape:EligibleActorHostShape a sh:NodeShape ;
  sh:targetClass ujggraph:Transition, ujggraph:OutgoingTransition ;
  sh:nodeKind sh:IRI ;

  sh:property [
    sh:path ujgactor:eligibleActorRefs ;
    sh:class ujgactor:Actor ;
    sh:nodeKind sh:IRI ;
  ] .
@prefix ujggraph: <https://ujg.specs.openuji.org/ed/ns/graph#> .
@prefix ujgactor: <https://ujg.specs.openuji.org/ed/ns/actor#> .
@prefix ujgactorshape: <https://ujg.specs.openuji.org/ed/ns/actor.shape#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

ujgactorshape:ActorShape a sh:NodeShape ;
  sh:targetClass ujgactor:Actor ;
  sh:nodeKind sh:IRI .

ujgactorshape:ResponsibleActorHostShape a sh:NodeShape ;
  sh:targetClass
    ujggraph:Journey,
    ujggraph:State,
    ujggraph:CompositeState,
    ujggraph:Transition,
    ujggraph:OutgoingTransition,
    ujggraph:OutgoingTransitionGroup ;
  sh:nodeKind sh:IRI ;

  sh:property [
    sh:path ujgactor:responsibleActorRef ;
    sh:class ujgactor:Actor ;
    sh:nodeKind sh:IRI ;
    sh:maxCount 1 ;
  ] .

ujgactorshape:EligibleActorHostShape a sh:NodeShape ;
  sh:targetClass ujggraph:Transition, ujggraph:OutgoingTransition ;
  sh:nodeKind sh:IRI ;

  sh:property [
    sh:path ujgactor:eligibleActorRefs ;
    sh:class ujgactor:Actor ;
    sh:nodeKind sh:IRI ;
  ] .

The rules below define the remaining module semantics beyond the structural constraints captured by the SHACL shape.

  1. Graph metadata only: Actor references describe Graph responsibility and eligibility metadata. They MUST NOT create hidden graph edges or change traversal behavior.

  2. Responsibility meaning: responsibleActorRef identifies ownership or stewardship, not legal accountability.

  3. Eligibility meaning: eligibleActorRefs describes intended actor eligibility, not authorization enforcement.

  4. Graceful degradation: Consumers that do not implement this module MAY ignore Actor semantics, but SHOULD preserve recognized JSON-LD data during read-transform-write when possible.

  5. Host boundary: Actor v0 MUST NOT be interpreted as defining actor attachments for nodes outside the allowed Graph host classes.

10. Minimal Example

json
{
  "@context": [
    "https://ujg.specs.openuji.org/ed/ns/context.jsonld",
    "https://ujg.specs.openuji.org/ed/ns/actor.context.jsonld"
  ],
  "@id": "https://example.com/ujg/actor/physical-ai-decision.jsonld",
  "@type": "UJGDocument",
  "nodes": [
    {
      "@id": "urn:ujg:actor:physical-ai-system",
      "@type": "Actor",
      "label": "Physical AI System"
    },
    {
      "@id": "urn:ujg:actor:production-engineer",
      "@type": "Actor",
      "label": "Production Engineer"
    },
    {
      "@id": "urn:ujg:actor:supervisor",
      "@type": "Actor",
      "label": "Supervisor"
    },
    {
      "@id": "urn:ujg:journey:physical-ai-review",
      "@type": "Journey",
      "startStateRef": "urn:ujg:state:engineer-approval-required",
      "stateRefs": [
        "urn:ujg:state:engineer-approval-required",
        "urn:ujg:state:decision-approved"
      ],
      "transitionRefs": ["urn:ujg:transition:approve-ai-decision"],
      "responsibleActorRef": "urn:ujg:actor:production-engineer"
    },
    {
      "@id": "urn:ujg:state:engineer-approval-required",
      "@type": "State",
      "label": "Engineer approval required",
      "responsibleActorRef": "urn:ujg:actor:production-engineer"
    },
    {
      "@id": "urn:ujg:state:decision-approved",
      "@type": "State",
      "label": "Decision approved"
    },
    {
      "@id": "urn:ujg:transition:approve-ai-decision",
      "@type": "Transition",
      "from": "urn:ujg:state:engineer-approval-required",
      "to": "urn:ujg:state:decision-approved",
      "eligibleActorRefs": [
        "urn:ujg:actor:production-engineer",
        "urn:ujg:actor:supervisor"
      ]
    }
  ]
}
{
  "@context": [
    "https://ujg.specs.openuji.org/ed/ns/context.jsonld",
    "https://ujg.specs.openuji.org/ed/ns/actor.context.jsonld"
  ],
  "@id": "https://example.com/ujg/actor/physical-ai-decision.jsonld",
  "@type": "UJGDocument",
  "nodes": [
    {
      "@id": "urn:ujg:actor:physical-ai-system",
      "@type": "Actor",
      "label": "Physical AI System"
    },
    {
      "@id": "urn:ujg:actor:production-engineer",
      "@type": "Actor",
      "label": "Production Engineer"
    },
    {
      "@id": "urn:ujg:actor:supervisor",
      "@type": "Actor",
      "label": "Supervisor"
    },
    {
      "@id": "urn:ujg:journey:physical-ai-review",
      "@type": "Journey",
      "startStateRef": "urn:ujg:state:engineer-approval-required",
      "stateRefs": [
        "urn:ujg:state:engineer-approval-required",
        "urn:ujg:state:decision-approved"
      ],
      "transitionRefs": ["urn:ujg:transition:approve-ai-decision"],
      "responsibleActorRef": "urn:ujg:actor:production-engineer"
    },
    {
      "@id": "urn:ujg:state:engineer-approval-required",
      "@type": "State",
      "label": "Engineer approval required",
      "responsibleActorRef": "urn:ujg:actor:production-engineer"
    },
    {
      "@id": "urn:ujg:state:decision-approved",
      "@type": "State",
      "label": "Decision approved"
    },
    {
      "@id": "urn:ujg:transition:approve-ai-decision",
      "@type": "Transition",
      "from": "urn:ujg:state:engineer-approval-required",
      "to": "urn:ujg:state:decision-approved",
      "eligibleActorRefs": [
        "urn:ujg:actor:production-engineer",
        "urn:ujg:actor:supervisor"
      ]
    }
  ]
}

Copyright © 2026 the Contributors to the ujg/modules/actor, published by the User Journal Graph Community Group under the W3C Community Contributor License Agreement (CLA) . A human-readable summary is available.

generated by Speculator