This is an exploratory supplemental profile. It complements the HTML/RDF Core Model, but its RDF relationships and consumer guidance can also be used by other RDF-bearing formats. It defines no new HTML attributes. This version also publishes a compact RDF vocabulary for discovery records, retrieved contributions, enrichment views, processing activities, relationship roles, and lifecycle states.

The document is itself an HTML/RDF document. The optional RDF Navigator exposes the dataset extracted from its current DOM.

Abstract

RDF makes it easy to state that another resource is related. It does not, by itself, tell an application whether that resource should be offered to a person, retrieved as additional information, or kept separate as evidence, provenance, validation material, an alternative, or a definition.

This profile defines a conservative discovery model for those cases. Publishers use established RDF relationships, beginning with rdfs:seeAlso, and may qualify a relationship with the DCAT relationship and role pattern. Consumers turn recognized relationships into explicit enrichment candidates. Discovery never implies retrieval; retrieval never implies assertion, merging, trust, validation, or execution.

It also defines a standard vocabulary whose namespace is https://ia2.dev/spec/discovery-enrichment#. The vocabulary makes consumer-side discovery state and enrichment provenance portable without turning a descriptive relationship into an instruction.

Introduction

A useful knowledge surface rarely contains everything worth knowing. A report may have supporting evidence, a claim may have provenance, a dataset may have a validation shape, and a concept may be defined by an ontology maintained elsewhere. RDF can identify all of those relationships. The remaining architectural question is how a consumer should turn them into understandable, controllable opportunities to obtain more knowledge.

This specification calls that process discovery and enrichment. Discovery is the recognition that a source dataset relates a context resource to a potentially useful target. Enrichment is the optional, policy-governed act of retrieving and presenting a target's contribution while preserving where it came from. Neither process changes what the source asserted.

Relationship to HTML/RDF Core

The HTML/RDF Core Model answers: “What RDF dataset does this HTML document express?” This profile begins after that dataset exists and answers: “What additional knowledge does it make discoverable, why might that knowledge be useful, and how can a consumer handle it without silently changing the source?”

No Discovery and Enrichment syntax is added to HTML. Publishers use ordinary RDF predicates and the HTML/RDF attributes already defined by Core. The same relationships can therefore participate when RDF arrives through Turtle, JSON-LD, an RDF API, or another RDF-supporting host format. HTML/RDF is the first integration surface, not a boundary around the model.

Motivating scenario

Consider an agent reading a published assessment. The assessment links to a vocabulary definition, a validation report, and the evidence behind one of its claims. The agent can extract those relationships without running script. It can explain what each target is for, ask a person or policy whether it should be retrieved, and display the selected material as additional layers. The agent does not treat those layers as statements made by the assessment, and a failed or untrusted target does not damage the assessment's own dataset.

This separation supports both interactive applications and autonomous agents: the former can expose intelligible “more to see” affordances, while the latter can follow explicit policy without confusing a link with an instruction or an external graph with local truth.

Competency questions

The following questions define the practical capability expected of this profile. They are also useful as review criteria for publishers, consumers, and future revisions.

Publishing and description

  1. Can a resource advertise additional knowledge without commanding a consumer to retrieve it?
  2. Can a publisher state why a target is relevant, using a precise relationship where one already exists?
  3. Can a generic “see also” relationship be qualified with a purpose or role without inventing host-language syntax?
  4. Can one context resource expose several independent targets whose order has no implied significance?
  5. Can a visible HTML link serve people and carry the same discovery relationship for RDF consumers?
  6. Can qualified relationship metadata be expressed without asserting unintended RDF about its HTML carrier?

Consumer behavior

  1. Can a consumer identify the context, target, relationship, optional roles, source, graph, and DOM carrier of a candidate?
  2. Can it explain what a target is for before retrieving it?
  3. Can a person or explicit application policy decide which candidates may be retrieved?
  4. Can the same target discovered through several relationships be fetched once while its distinct relationships remain inspectable?
  5. Can a retrieval fail, be unsupported, or be blocked without invalidating the source dataset or other candidates?
  6. Can retrieved statements remain distinguishable by source and graph when shown alongside local statements?
  7. Can an interface explain whether a contribution is available, loading, loaded, rejected, or stale?
  8. Can a consumer update the candidate set when a live semantic DOM changes without treating prior retrievals as new source assertions?

Semantic and trust boundaries

  1. Does discovery remain distinct from retrieval, parsing, assertion, graph merging, validation, trust, and execution?
  2. Can provenance be retained well enough to explain why a contribution appeared and where every displayed statement came from?
  3. Can credentials, cross-origin access, redirects, representation size, and parser risk remain governed by ordinary security policy rather than RDF-link semantics?

Scope

This profile addresses:

This profile does not define:

Terminology

source dataset
The RDF dataset in which a discovery relationship was observed.
context resource
The subject of a direct discovery relationship, or the resource carrying a qualified DCAT relationship.
target resource
The resource identified as potentially providing additional information.
enrichment candidate
A consumer-side record containing a context resource, target resource, relationship, optional roles, source identity, and presentation metadata.
retrieved contribution
An RDF graph or dataset obtained by following an enrichment candidate.
enrichment view
A presentation that lets a user inspect a source dataset together with one or more retrieved contributions while preserving their boundaries.

Core boundary An enrichment candidate is an application affordance derived from RDF. It is not an instruction embedded in the graph.

Design principles

  1. Use precise relationships first. A known predicate is preferable to a generic relation plus an explanatory label.
  2. Keep links descriptive. A relationship does not grant authority to fetch, disclose credentials, combine claims, or execute content.
  3. Preserve provenance. Retrieved information remains attributable to the source from which it was obtained.
  4. Keep choice visible. A person or policy can decide which candidates to follow and which contributions to display.
  5. Remain vocabulary-neutral. Domain vocabularies may define useful discovery relationships without changes to this profile.

Discovery and Enrichment vocabulary

The vocabulary namespace is https://ia2.dev/spec/discovery-enrichment#, abbreviated de: in this specification. Its terms describe records maintained by a consumer. They do not alter the source dataset and do not grant permission to retrieve, merge, trust, validate, or execute a target.

This section is both the human-readable vocabulary reference and its RDF publication. Every class, property, hierarchy edge, domain, range, role, and status below is asserted by the HTML/RDF attributes on the corresponding definition.

Class hierarchy

Class · de:EnrichmentArtifact

Enrichment artifact

A consumer-maintained entity created or retained during discovery and enrichment processing.

Class · de:EnrichmentCandidate

Enrichment candidate

A consumer-side record of a discovered context-target relationship and the information needed to explain and process it.

Class · de:RetrievedContribution

Retrieved contribution

An RDF graph or dataset interpreted from a representation retrieved by following an enrichment candidate.

Class · de:EnrichmentView

Enrichment view

A consumer presentation or presentation state that brings candidates and retrieved contributions together while preserving their source boundaries.

Class · de:EnrichmentActivity

Enrichment activity

An activity performed by a consumer during discovery, selection, retrieval, interpretation, or presentation.

Class · de:DiscoveryActivity

Discovery activity

An activity that recognizes discovery relationships in a source dataset and generates enrichment candidates.

Class · de:RetrievalActivity

Retrieval activity

An authorized network or local acquisition activity that obtains a representation for an enrichment candidate.

Class · de:SelectionActivity

Selection activity

An activity in which a user or explicit application policy selects a candidate for retrieval or presentation.

Class · de:InterpretationActivity

Interpretation activity

An activity that parses or extracts a retrieved representation into a retrieved contribution.

Class · de:PresentationActivity

Presentation activity

An activity that generates or updates an enrichment view from candidates, source data, and retrieved contributions.

Class · de:EnrichmentRole

Enrichment role

A controlled concept describing what a target may contribute in relation to its context resource.

Class · de:EnrichmentStatus

Enrichment status

A controlled concept describing the consumer-observed lifecycle state of an enrichment artifact.

Properties

These properties form a normalized consumer record. Applications MAY also retain richer host-specific and protocol-specific metadata. Domains and ranges are RDF entailments, not validation constraints.

Object property · de:contextResource

context resource

Identifies the resource about which additional knowledge was discovered.

Object property · de:targetResource

target resource

Identifies the resource offered as a potential source of additional knowledge.

Object property · de:discoveryPredicate

discovery predicate

Identifies the RDF predicate whose direct relationship exposed the candidate.

Object property · de:qualifiedRelationship

qualified relationship

Identifies the source relationship node from which qualification metadata was obtained.

Object property · de:enrichmentRole

enrichment role

Identifies a purpose that explains what the target may contribute to the context resource.

Object property · de:discoveredIn

discovered in

Identifies the source document or dataset from which the candidate was derived.

Object property · de:sourceGraph

source graph

Identifies the named graph in which the discovery relationship was observed.

Object property · de:carrier

carrier

Identifies a host-format node or resource that carried the discovery relationship, such as an addressable HTML element.

Object property · de:hasContribution

has contribution

Associates a candidate with a contribution obtained by following it.

Object property · de:retrievedFrom

retrieved from

Identifies the retrieval target from which a contribution was obtained, after recording redirects separately when relevant.

Object property · de:interpretedFrom

interpreted from

Identifies the retrieved representation from which a contribution was parsed or extracted.

Object property · de:presentsCandidate

presents candidate

Identifies an enrichment candidate made inspectable in an enrichment view.

Object property · de:includesContribution

includes contribution

Identifies a retrieved contribution presented as part of an enrichment view.

Object property · de:enrichmentStatus

enrichment status

Identifies the current consumer-observed lifecycle state of an enrichment artifact.

Enrichment roles

Enrichment roles answer “what may this target contribute?” They are instances of de:EnrichmentRole, and therefore of dcat:Role and skos:Concept. The hierarchy is extensible. A precise RDF predicate remains preferable when it fully expresses the relationship; a role supplies purpose, not replacement semantics.

Concept scheme · de:EnrichmentRoleScheme

Discovery and Enrichment roles

The controlled scheme of standard purposes for additional knowledge.

Top role · de:Evidence

evidence

Material relevant to evaluating the support for or against a claim, conclusion, or decision.

Role · de:SupportingEvidence

supporting evidence

Evidence offered in support of the context resource or a claim it contains.

Role · de:OpposingEvidence

opposing evidence

Evidence offered against, or materially challenging, the context resource or a claim it contains.

Top role · de:Interpretation

interpretation

Material that helps a consumer understand the meaning, use, or context of a resource.

Role · de:Definition

definition

Material that defines a term, identifier, model, or other resource used by the context.

Role · de:Example

example

Material that illustrates the application or interpretation of the context resource.

Role · de:BackgroundContext

background context

Material that supplies relevant surrounding information without defining or evaluating the context resource.

Top role · de:Assessment

assessment

Material used to evaluate conformance, quality, compatibility, or another condition of the context resource.

Role · de:ValidationReport

validation report

Material reporting the result of evaluating data or an artifact against declared constraints.

Role · de:ConstraintSet

constraint set

Material declaring conditions against which the context resource may be assessed.

Top role · de:Provenance

provenance

Material describing origins, responsibility, derivation, custody, or processing history.

Role · de:SourceProvenance

source provenance

Material specifically describing the origin or derivation of the context resource or its claims.

Top role · de:Evolution

evolution

Material that places the context resource within change, version, replacement, or alternative histories.

Role · de:Update

update

Material representing a newer state, revision, or successor relevant to the context resource.

Role · de:Alternative

alternative

Material representing another version, expression, approach, or choice rather than a successor.

Role · de:ChangeHistory

change history

Material describing changes, versions, or transitions involving the context resource.

Lifecycle states

Lifecycle states describe consumer observations, not facts asserted by the publisher. They form a deliberately small flat scheme; an application can retain more detailed protocol or error state beside them.

de:Available, de:Selected, de:Retrieving, de:Retrieved, de:Unsupported, de:Failed, de:Blocked, and de:Stale are the standard lifecycle values.

Concept scheme · de:EnrichmentStatusScheme

Discovery and Enrichment lifecycle states

The controlled scheme of interoperable consumer-observed enrichment states.

Status · de:Available

available

The candidate has been discovered and is available for selection.

Status · de:Selected

selected

A user or application policy has selected the candidate for retrieval or presentation.

Status · de:Retrieving

retrieving

An authorized attempt to acquire and interpret the target is in progress.

Status · de:Retrieved

retrieved

A supported contribution has been obtained and retained with its source boundary.

Status · de:Unsupported

unsupported

The target was reached or identified, but no supported RDF-bearing representation could be interpreted.

Status · de:Failed

failed

Retrieval or interpretation ended unsuccessfully for a reason other than an explicit policy block.

Status · de:Blocked

blocked

Retrieval or presentation was prevented by an explicit security, privacy, authorization, or application policy.

Status · de:Stale

stale

The artifact remains retained, but its candidate disappeared or its source or retrieved representation has since changed.

Vocabulary boundary

The vocabulary deliberately reuses PROV for generation, use, derivation, attribution, and time; DCAT and SKOS for role concepts; DCTERMS for titles, formats, and general relationships; and host or protocol vocabularies for representation and network details. It does not redefine those terms.

RDFS and OWL domains and ranges support inference. They do not impose cardinality, closed-world validation, or retrieval requirements. A future profile may publish SHACL shapes for interoperable record validation without changing these class and property semantics.

Direct discovery relationships

Baseline discovery with rdfs:seeAlso

A publisher SHOULD use rdfs:seeAlso when the target may provide additional information and no more precise relationship is intended. A consumer implementing this profile MUST recognize rdfs:seeAlso as a discovery relationship.

<#claim-42>
    rdfs:seeAlso <https://example.com/claims/42/evidence> .

More than one rdfs:seeAlso value represents independent candidates. Their RDF order is not significant.

Prefer precise relationships

When an established predicate states the intended relationship, a publisher SHOULD use it directly. The following table is guidance, not a closed registry.

IntentCandidate relationship
Additional informationrdfs:seeAlso
Defines the context resourcerdfs:isDefinedBy
Required for coherencedcterms:requires
Source or derivationdcterms:source, prov:wasDerivedFrom, or a more precise PROV property
Version or replacementDCTERMS, DCAT, or PROV version relationships
Dataset subset or accessVoID or DCAT dataset relationships
Formal ontology importowl:imports, only when its ontology semantics are intended

A consumer MAY recognize additional predicates according to its application domain. Recognition makes a target discoverable; it does not change the semantics of the predicate.

Qualified purpose with DCAT

For a document, dataset, cataloged artifact, or other legitimate dcat:Resource, a publisher MAY use dcat:qualifiedRelation, dcat:Relationship, dcterms:relation, and dcat:hadRole to answer the question “what is this target for?”

<https://example.com/report>
    a dcat:Resource ;
    rdfs:seeAlso <https://example.com/report/evidence> ;
    dcat:qualifiedRelation [
        a dcat:Relationship ;
        dcterms:relation <https://example.com/report/evidence> ;
        dcat:hadRole <http://www.iana.org/assignments/relation/describedby>
    ] .

A role MUST be identified by an IRI. Publishers SHOULD reuse a suitable role from an established controlled vocabulary, including the standard Discovery and Enrichment roles and the IANA Link Relations registry. A domain-specific role MAY be defined as a dcat:Role and skos:Concept when no existing role is accurate.

<https://example.com/report>
    dcat:qualifiedRelation [
        a dcat:Relationship ;
        dcterms:relation <https://example.com/report/evidence> ;
        dcat:hadRole de:SupportingEvidence
    ] .

A direct discovery triple and its qualified relationship MAY coexist. The direct triple supports simple consumers; the relationship node adds role and other metadata for qualified consumers. They do not cause two retrievals of the same target.

HTML/RDF authoring

HTML/RDF requires no supplemental syntax for discovery. A visible anchor can carry a complete relationship while retaining its ordinary browser behavior.

<article id="claim-42">
  <p>The release meets the accessibility contract.</p>
  <a
    href="/claims/42/evidence"
    rdf-subject="#claim-42"
    rdf-predicate="http://www.w3.org/2000/01/rdf-schema#seeAlso"
  >Inspect supporting evidence</a>
</article>

The DCAT relationship node can be expressed with extraction-local keys. The keys join the statements; DOM nesting does not establish RDF scope.

<a
  href="/report/evidence"
  rdf-subject="#report"
  rdf-predicate="http://www.w3.org/2000/01/rdf-schema#seeAlso"
>Evidence and provenance</a>

<meta
  rdf-subject="#report"
  rdf-predicate="http://www.w3.org/ns/dcat#qualifiedRelation"
  rdf-object-key="report-evidence-relation"
>
<link
  href="http://www.w3.org/ns/dcat#Relationship"
  rdf-subject-key="report-evidence-relation"
  rdf-predicate="http://www.w3.org/1999/02/22-rdf-syntax-ns#type"
>
<link
  href="/report/evidence"
  rdf-subject-key="report-evidence-relation"
  rdf-predicate="http://purl.org/dc/terms/relation"
>
<link
  href="https://ia2.dev/spec/discovery-enrichment#SupportingEvidence"
  rdf-subject-key="report-evidence-relation"
  rdf-predicate="http://www.w3.org/ns/dcat#hadRole"
>

Metadata-only carriers MAY be hidden. The primary discovery link SHOULD remain visible when it is also useful to a person.

Enrichment candidate model

A consumer creates one candidate record for each recognized context-target relationship. The record SHOULD retain:

Candidate records are consumer state. Creating one MUST NOT add an RDF assertion to the source dataset.

@prefix de: <https://ia2.dev/spec/discovery-enrichment#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

_:candidate
    a de:EnrichmentCandidate ;
    de:contextResource <https://example.com/report#claim-42> ;
    de:targetResource <https://example.com/report/evidence> ;
    de:discoveryPredicate rdfs:seeAlso ;
    de:enrichmentRole de:SupportingEvidence ;
    de:discoveredIn <https://example.com/report> ;
    de:enrichmentStatus de:Available .

The candidate above is an assertion made by the consumer about its own observation. It does not assert that the report retrieved, accepted, or endorsed the evidence target.

Consumer processing

A conforming consumer processes discovery in distinct phases:

  1. Extract. Obtain the source RDF dataset according to its host format. HTML/RDF extraction remains local and non-executing.
  2. Discover. Find recognized direct and qualified relationships and create enrichment candidates.
  3. Present or select. Expose candidates to a user or apply an explicit application policy.
  4. Retrieve. Dereference only selected targets, under ordinary network, credential, privacy, and content-negotiation rules.
  5. Interpret. Parse a supported RDF representation or extract RDF from a supported host representation.
  6. Retain boundaries. Store the retrieved contribution with its retrieval identity, source identity, and graph boundaries intact.
  7. Display. Offer an enrichment view without silently rewriting the original dataset.
@prefix de: <https://ia2.dev/spec/discovery-enrichment#> .
@prefix prov: <http://www.w3.org/ns/prov#> .

_:discovery
    a de:DiscoveryActivity ;
    prov:used <https://example.com/report> ;
    prov:generated _:candidate .

_:selection
    a de:SelectionActivity ;
    prov:used _:candidate .

_:retrieval
    a de:RetrievalActivity ;
    prov:used _:candidate ;
    prov:generated _:representation .

_:interpretation
    a de:InterpretationActivity ;
    prov:used _:representation ;
    prov:generated _:contribution .

_:contribution
    a de:RetrievedContribution ;
    de:retrievedFrom <https://example.com/report/evidence> ;
    de:interpretedFrom _:representation ;
    de:enrichmentStatus de:Retrieved .

_:view
    a de:EnrichmentView ;
    de:presentsCandidate _:candidate ;
    de:includesContribution _:contribution .

No implicit retrieval

Merely observing a discovery relationship MUST NOT cause a consumer to dereference its target. A consumer MAY retrieve automatically only when an explicit user or application policy authorizes that class of retrieval.

Retrieval and representation handling

A consumer MAY request an RDF serialization or an RDF-bearing HTML representation through normal HTTP content negotiation. Redirects, authentication challenges, cache controls, and failures are handled as network behavior, not RDF semantics.

Processing a retrieved HTML representation MUST NOT require script execution. An in-application consumer MAY separately observe a live DOM that an application has already changed, but that is a distinct acquisition mode.

Failure is local

A failed, unsupported, or rejected target MUST NOT invalidate the source dataset or unrelated candidates. The consumer SHOULD expose a target-specific status without replacing the relationship with an error assertion in the source graph.

Source, graph, and trust boundaries

A retrieved contribution MUST remain distinguishable from the source dataset. A consumer MAY maintain separate datasets, a provenance-aware store, or another representation that preserves the same distinction.

A consumer MUST NOT, solely because a target was followed:

An enrichment view MAY display a union or comparison, but it MUST make the contributing sources available for inspection. Visual combination is not semantic assertion.

Presentation guidance

A user interface SHOULD explain both the target and why it was offered. It SHOULD prefer, in order:

  1. a title or label explicitly attached to the qualified relationship;
  2. a human-readable label for its role;
  3. the visible HTML link text associated with the relationship;
  4. metadata already known about the target; and
  5. the target IRI as a final fallback.

A consumer SHOULD distinguish “available,” “loading,” “loaded,” “unsupported,” “failed,” and “blocked by policy” states without relying on color alone. It SHOULD let users remove a retrieved contribution without modifying the source RDF.

Live sources

When an application changes a semantic DOM, a consumer MAY repeat local extraction and update its candidate set. Candidates no longer present in the latest snapshot SHOULD be marked unavailable or removed according to the interface policy.

A previously retrieved contribution does not become part of the new source snapshot merely because it remains visible in an enrichment view. Runtime observation, retrieval history, and source assertions remain distinct.

When an enrichment view is persisted as provenance-bearing RDF, a materially changed view SHOULD be represented as a new de:EnrichmentView or as a revision related with PROV. A runtime interface may reuse the same DOM or application object while maintaining that distinction in its persisted record.

Security and privacy

Discovery targets are untrusted network input. They can reveal user interest, trigger cross-origin requests, redirect to unexpected hosts, return very large representations, or attempt to exploit parsers and renderers.

A consumer SHOULD:

Conformance classes

Conforming publisher

A conforming publisher:

Conforming consumer

A conforming consumer:

Conforming enrichment record

An RDF graph or dataset claiming to be a conforming enrichment record:

Open questions