← All Specifications

INPUT-LD

The first functional LD profile — extending CORE-LD with input semantics for representing requests, intents, parameters, constraints, and context.

L3 — Input Profile 12 Invariants 418 Lines Draft

INPUT-LD v0.1.0

The first functional LD profile — extending CORE-LD with input semantics for representing requests, intents, parameters, constraints, and context.

Status: Draft Extends: CORE-LD v0.1.0 Constitutional dependencies: URS v0.1.0 → CORE-LD v0.1.0 Spec family: Functional Profile (see CORE-LD §6.1 — Composition Rules) Dimension registry prefix: INPUT-LD Canonical @context: https://specs.initialcore.net/ns/input-ld.jsonld

1. Preamble

INPUT-LD is the first functional profile extending CORE-LD. It defines how requests, intents, parameters, constraints, and context are expressed as CORE-LD entities with standardised input semantics.

What INPUT-LD is:

What INPUT-LD is not:

1.1 Composition rule

INPUT-LD = CORE-LD + Request + Intent + Parameter + Constraint + InputContext

Any conforming INPUT-LD implementation MUST also conform to CORE-LD at the same conformance level. An encoded INPUT-LD binding (e.g., JSON-INPUT-LD) MUST preserve both CORE-LD and INPUT-LD invariants.

2. Entity Types

INPUT-LD extends the CORE-LD kind set with the following entity types:

2.1 Request

A Request represents a structured invocation — an intent to cause some computation, retrieval, or transformation.

{
  "@context": "https://specs.initialcore.net/ns/input-ld.jsonld",
  "@id": "_:req1",
  "@type": "Request",
  "intent": "query",
  "target": "_:resource1",
  "parameters": [ ... ],
  "constraints": [ ... ],
  "context": { ... }
}
PropertyTypeRequiredDescription
`intent`StringYesThe purpose: `query`, `mutate`, `invoke`, `observe`, `delegate`
`target`Entity refYesThe entity or resource this request acts upon
`parameters`Array of ParameterNoNamed values configuring the request
`constraints`Array of ConstraintNoConstraints governing the request
`context`InputContext objectNoSurrounding context for the request

2.2 Intent

An Intent captures the semantic purpose of a Request — what the requesting actor fundamentally wants, independent of how it is achieved.

{
  "@id": "_:int1",
  "@type": "Intent",
  "purpose": "retrieve",
  "domain": "identity",
  "priority": "high"
}

Registered intent purposes:

PurposeMeaning
`query`Retrieve information without side effects
`mutate`Create, update, or delete state
`invoke`Trigger a computation or action
`observe`Monitor, watch, or subscribe
`delegate`Forward to another system for handling

Registered intent domains: identity, representation, governance, storage, memory, reasoning, trust, agent, workflow, generic

2.3 Parameter

A named input value providing configuration for a request.

{
  "@id": "_:p1",
  "@type": "Parameter",
  "name": "maxResults",
  "value": 100,
  "type": "integer"
}
PropertyTypeRequiredDescription
`name`StringYesParameter name (CORE-LD @context-defined term or extension)
`value`AnyYesParameter value
`type`StringNoSemantic type hint (`integer`, `string`, `iri`, `entity`, `boolean`, `dateTime`)

2.4 Constraint

A restriction on what constitutes a valid response or execution of a request.

{
  "@id": "_:c1",
  "@type": "Constraint",
  "field": "provenance.Representer",
  "operator": "equals",
  "value": "did:icore:admin"
}
PropertyTypeRequiredDescription
`field`StringYesPath expression identifying the constrained field
`operator`StringYesConstraint operator
`value`AnyYesConstraint value
`severity`StringNo`required` (default), `preferred`, `forbidden`

Registered constraint operators: equals, notEquals, greaterThan, lessThan, in, notIn, contains, matches, exists, notExists

2.5 InputContext

Surrounding context that frames a request — who is asking, from where, with what state.

{
  "session": "_:session1",
  "actor": "did:icore:user:alice",
  "channel": "studio.initialcore.net",
  "workflow": "spec-design",
  "state": "review"
}
PropertyTypeRequiredDescription
`session`Entity refNoReference to a Session entity
`actor`IRIYesDID or IRI identifying the requesting actor
`channel`StringNoOriginating channel or surface
`workflow`StringNoWorkflow identifier if request is part of a process
`state`StringNoCurrent state within the workflow

3. Request Lifecycle

A Request entity traces through a defined lifecycle. Implementations MAY represent the lifecycle state explicitly.

Draft → Submitted → Received → Accepted → Rejected → Processing → Completed → Failed → Responded
StateMeaning
`Draft`Being composed, not yet submitted
`Submitted`Sent by the requesting actor
`Received`Acknowledged by the processing system
`Accepted`Determined valid and actionable
`Rejected`Determined invalid or impossible
`Processing`Work is underway
`Completed`Work finished successfully
`Failed`Work finished with error
`Responded`Output delivered to requesting actor

4. Invariants

INPUT-LD inherits all 23 CORE-LD invariants (I1–I23) as its conformance criteria. The following INPUT-LD-specific invariants are ADDITIONAL:

4.1 Request invariants (I-INPUT-1 through I-INPUT-5)

IDInvariantCheck
I-INPUT-1Every Request has an intent`intent` field present and non-empty
I-INPUT-2Intent purpose is registered`purpose` ∈ {query, mutate, invoke, observe, delegate}
I-INPUT-3Every Request has a target`target` IRI resolves to an entity in the graph or is a known external resource
I-INPUT-4Constraint operator is registered`operator` ∈ {equals, notEquals, greaterThan, lessThan, in, notIn, contains, matches, exists, notExists}
I-INPUT-5InputContext has an actor`actor` present when InputContext is provided

4.2 Parameter invariants (I-INPUT-6 through I-INPUT-7)

IDInvariantCheck
I-INPUT-6Every Parameter has a name and value`name` and `value` both present
I-INPUT-7Parameter name is a defined term`name` resolves through the active @context

4.3 Constraint invariants (I-INPUT-8 through I-INPUT-10)

IDInvariantCheck
I-INPUT-8Every Constraint has field, operator, valueAll three present
I-INPUT-9Constraint severity is valid`severity` ∈ {required, preferred, forbidden} or absent (defaults to required)
I-INPUT-10Constraint field path is resolvable`field` is a dot-separated path that could reference a valid entity property

4.4 Session invariants (I-INPUT-11 through I-INPUT-12)

IDInvariantCheck
I-INPUT-11Session entity has start timestampSession entity carries `startedAt` timestamp
I-INPUT-12Session entity has an actor referenceSession entity references an actor via `actor` property

5. INPUT-LD @context Extension

The INPUT-LD @context extends the CORE-LD @context with the following term mappings:

{
  "@context": {
    "Request": "https://specs.initialcore.net/ns/input#Request",
    "Intent": "https://specs.initialcore.net/ns/input#Intent",
    "Parameter": "https://specs.initialcore.net/ns/input#Parameter",
    "Constraint": "https://specs.initialcore.net/ns/input#Constraint",
    "InputContext": "https://specs.initialcore.net/ns/input#InputContext",
    "Session": "https://specs.initialcore.net/ns/input#Session",

    "intent": "https://specs.initialcore.net/ns/input#intent",
    "parameters": {
      "@id": "https://specs.initialcore.net/ns/input#parameters",
      "@container": "@set"
    },
    "constraints": {
      "@id": "https://specs.initialcore.net/ns/input#constraints",
      "@container": "@set"
    },
    "context": "https://specs.initialcore.net/ns/input#context",
    "target": "https://specs.initialcore.net/ns/input#target",
    "purpose": "https://specs.initialcore.net/ns/input#purpose",
    "domain": "https://specs.initialcore.net/ns/input#domain",
    "priority": "https://specs.initialcore.net/ns/input#priority",
    "name": "https://specs.initialcore.net/ns/input#name",
    "value": "https://specs.initialcore.net/ns/input#value",
    "type": "https://specs.initialcore.net/ns/input#type",
    "field": "https://specs.initialcore.net/ns/input#field",
    "operator": "https://specs.initialcore.net/ns/input#operator",
    "severity": "https://specs.initialcore.net/ns/input#severity",
    "channel": "https://specs.initialcore.net/ns/input#channel",
    "workflow": "https://specs.initialcore.net/ns/input#workflow",
    "state": "https://specs.initialcore.net/ns/input#state",
    "session": {
      "@id": "https://specs.initialcore.net/ns/input#session",
      "@type": "@id"
    },
    "actor": {
      "@id": "https://specs.initialcore.net/ns/input#actor",
      "@type": "@id"
    },
    "startedAt": {
      "@id": "https://specs.initialcore.net/ns/input#startedAt",
      "@type": "xsd:dateTime"
    }
  }
}

6. Composition Examples

INPUT-LD composes with CORE-LD as the base. Further composition with encoding and addressing is additive.

6.1 Pure INPUT-LD (abstract graph)

INPUT-LD = CORE-LD + input semantics
Conforms to: CORE-LD (I1–I23) + INPUT-LD (I-INPUT-1 through I-INPUT-12)

6.2 JSON-INPUT-LD

JSON-INPUT-LD = INPUT-LD + JSON encoding
Conforms to: CORE-LD I1–I23 + INPUT-LD I-INPUT-x + JSON deterministic serialization
@context: core-ld.jsonld + input-ld.jsonld

6.3 DAG-JSON-INPUT-LD

DAG-JSON-INPUT-LD = INPUT-LD + JSON + DAG addressing
Adds: canonical hash per URS Canonicalization, content-address invariants C1–C5

7. Conformance

7.1 Implementation requirements

A conforming INPUT-LD implementation MUST: 1. Satisfy all CORE-LD conformance requirements (§9 of CORE-LD) 2. Parse the INPUT-LD @context extension (§5) in addition to the CORE-LD @context 3. Validate all 12 INPUT-LD invariants (I-INPUT-1 through I-INPUT-12) 4. Reject documents that violate any CORE-LD or INPUT-LD invariant 5. Accept any valid CORE-LD document that does not use INPUT-LD entity types as also valid at the CORE-LD level (INPUT-LD is additive, not restrictive)

7.2 Conformance levels

LevelRequirements
L1 StructuralCORE-LD L1 + I-INPUT-1, I-INPUT-3, I-INPUT-6, I-INPUT-8 (basic request shape)
L2 CompleteCORE-LD L2 + all 12 INPUT-LD invariants
L3 ConstitutionalCORE-LD L3 + all 12 INPUT-LD invariants + provenance on constitutional requests

8. Examples

8.1 Minimal query request

{
  "@context": [
    "https://specs.initialcore.net/ns/core-ld.jsonld",
    "https://specs.initialcore.net/ns/input-ld.jsonld"
  ],
  "@id": "_:query1",
  "@type": "Request",
  "intent": "query",
  "target": "_:entity1",
  "parameters": [
    { "@id": "_:p1", "@type": "Parameter", "name": "maxResults", "value": 50 }
  ],
  "context": {
    "actor": "did:icore:user:alice",
    "channel": "studio.initialcore.net"
  }
}

8.2 Constrained mutation request

{
  "@context": [
    "https://specs.initialcore.net/ns/core-ld.jsonld",
    "https://specs.initialcore.net/ns/input-ld.jsonld"
  ],
  "@id": "_:mut1",
  "@type": "Request",
  "intent": "mutate",
  "target": "_:entity1",
  "parameters": [
    { "@id": "_:p1", "@type": "Parameter", "name": "name", "value": "UpdatedName" }
  ],
  "constraints": [
    {
      "@id": "_:c1",
      "@type": "Constraint",
      "field": "provenance.Representer",
      "operator": "equals",
      "value": "did:icore:admin",
      "severity": "required"
    }
  ],
  "context": {
    "actor": "did:icore:admin",
    "session": "_:s1",
    "workflow": "entity-update"
  }
}

8.3 Delegate request with explicit provenance

{
  "@context": [
    "https://specs.initialcore.net/ns/core-ld.jsonld",
    "https://specs.initialcore.net/ns/input-ld.jsonld"
  ],
  "@id": "_:del1",
  "@type": "Request",
  "intent": "delegate",
  "target": "_:agent1",
  "parameters": [
    {
      "@id": "_:p1",
      "@type": "Parameter",
      "name": "originalRequest",
      "value": "_:originalReq"
    }
  ],
  "provenance": {
    "Representer": "did:icore:gateway",
    "Timestamp": "2026-07-30T12:00:00Z",
    "Authority": { "authorityType": "granted", "mayDelegate": true },
    "RepresentationContext": "urn:icore:delegation:v1"
  },
  "context": {
    "actor": "did:icore:gateway",
    "channel": "studio.initialcore.net"
  }
}

9. Relationship to Other Profiles

INPUT-LD is the first functional profile and shares the following relationship rules with future profiles:

ProfileRelationshipRule
MEMORY-LDINPUT-LD can query MEMORY-LD storesRequests target memory entities; memory responses are not inputs
POLICY-LDINPUT-LD carries constraints; POLICY-LD defines valid constraintsConstraint operators registered in a shared registry
TRUST-LDINPUT-LD requests may carry trust assertionsTrust attestations are parameters, not INPUT-LD entity types

10. Future Considerations


INPUT-LD v0.1.0 — July 30, 2026. Draft. Extends CORE-LD v0.1.0. First functional profile in the DAG--LD specification family.*