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.
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.
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.
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.
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.
The following questions define the practical capability expected of this profile. They are also useful as review criteria for publishers, consumers, and future revisions.
This profile addresses:
This profile does not define:
Core boundary An enrichment candidate is an application affordance derived from RDF. It is not an instruction embedded in the graph.
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.
prov:Entity
de:EnrichmentArtifact
de:EnrichmentCandidatede:RetrievedContributionde:EnrichmentView, also a prov:Collectionprov:Activity
de:EnrichmentActivity
de:DiscoveryActivityde:SelectionActivityde:RetrievalActivityde:InterpretationActivityde:PresentationActivitydcat:Role
de:EnrichmentRoleskos:Concept
de:EnrichmentStatusClass · de:EnrichmentArtifact
A consumer-maintained entity created or retained during discovery and enrichment processing.
Class · de:EnrichmentCandidate
A consumer-side record of a discovered context-target relationship and the information needed to explain and process it.
Class · de:RetrievedContribution
An RDF graph or dataset interpreted from a representation retrieved by following an enrichment candidate.
Class · de:EnrichmentView
A consumer presentation or presentation state that brings candidates and retrieved contributions together while preserving their source boundaries.
Class · de:EnrichmentActivity
An activity performed by a consumer during discovery, selection, retrieval, interpretation, or presentation.
Class · de:DiscoveryActivity
An activity that recognizes discovery relationships in a source dataset and generates enrichment candidates.
Class · de:RetrievalActivity
An authorized network or local acquisition activity that obtains a representation for an enrichment candidate.
Class · de:SelectionActivity
An activity in which a user or explicit application policy selects a candidate for retrieval or presentation.
Class · de:InterpretationActivity
An activity that parses or extracts a retrieved representation into a retrieved contribution.
Class · de:PresentationActivity
An activity that generates or updates an enrichment view from candidates, source data, and retrieved contributions.
Class · de:EnrichmentRole
A controlled concept describing what a target may contribute in relation to its context resource.
Class · de:EnrichmentStatus
A controlled concept describing the consumer-observed lifecycle state of an enrichment artifact.
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
Identifies the resource about which additional knowledge was discovered.
Object property · de:targetResource
Identifies the resource offered as a potential source of additional knowledge.
Object property · de:discoveryPredicate
Identifies the RDF predicate whose direct relationship exposed the candidate.
Object property · de:qualifiedRelationship
Identifies the source relationship node from which qualification metadata was obtained.
Object property · de:enrichmentRole
Identifies a purpose that explains what the target may contribute to the context resource.
Object property · de:discoveredIn
Identifies the source document or dataset from which the candidate was derived.
Object property · de:sourceGraph
Identifies the named graph in which the discovery relationship was observed.
Object property · de:carrier
Identifies a host-format node or resource that carried the discovery relationship, such as an addressable HTML element.
Object property · de:hasContribution
Associates a candidate with a contribution obtained by following it.
Object property · de:retrievedFrom
Identifies the retrieval target from which a contribution was obtained, after recording redirects separately when relevant.
Object property · de:interpretedFrom
Identifies the retrieved representation from which a contribution was parsed or extracted.
Object property · de:presentsCandidate
Identifies an enrichment candidate made inspectable in an enrichment view.
Object property · de:includesContribution
Identifies a retrieved contribution presented as part of an enrichment view.
Object property · de:enrichmentStatus
Identifies the current consumer-observed lifecycle state of an enrichment artifact.
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.
de:Evidence
de:SupportingEvidencede:OpposingEvidencede:Interpretation
de:Definitionde:Examplede:BackgroundContextde:Assessment
de:ValidationReportde:ConstraintSetde:Provenance
de:SourceProvenancede:Evolution
de:Updatede:Alternativede:ChangeHistoryConcept scheme · de:EnrichmentRoleScheme
The controlled scheme of standard purposes for additional knowledge.
Top role · de:Evidence
Material relevant to evaluating the support for or against a claim, conclusion, or decision.
Role · de:SupportingEvidence
Evidence offered in support of the context resource or a claim it contains.
Role · de:OpposingEvidence
Evidence offered against, or materially challenging, the context resource or a claim it contains.
Top role · de:Interpretation
Material that helps a consumer understand the meaning, use, or context of a resource.
Role · de:Definition
Material that defines a term, identifier, model, or other resource used by the context.
Role · de:Example
Material that illustrates the application or interpretation of the context resource.
Role · de:BackgroundContext
Material that supplies relevant surrounding information without defining or evaluating the context resource.
Top role · de:Assessment
Material used to evaluate conformance, quality, compatibility, or another condition of the context resource.
Role · de:ValidationReport
Material reporting the result of evaluating data or an artifact against declared constraints.
Role · de:ConstraintSet
Material declaring conditions against which the context resource may be assessed.
Top role · de:Provenance
Material describing origins, responsibility, derivation, custody, or processing history.
Role · de:SourceProvenance
Material specifically describing the origin or derivation of the context resource or its claims.
Top role · de:Evolution
Material that places the context resource within change, version, replacement, or alternative histories.
Role · de:Update
Material representing a newer state, revision, or successor relevant to the context resource.
Role · de:Alternative
Material representing another version, expression, approach, or choice rather than a successor.
Role · de:ChangeHistory
Material describing changes, versions, or transitions involving the context resource.
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
The controlled scheme of interoperable consumer-observed enrichment states.
Status · de:Available
The candidate has been discovered and is available for selection.
Status · de:Selected
A user or application policy has selected the candidate for retrieval or presentation.
Status · de:Retrieving
An authorized attempt to acquire and interpret the target is in progress.
Status · de:Retrieved
A supported contribution has been obtained and retained with its source boundary.
Status · de:Unsupported
The target was reached or identified, but no supported RDF-bearing representation could be interpreted.
Status · de:Failed
Retrieval or interpretation ended unsuccessfully for a reason other than an explicit policy block.
Status · de:Blocked
Retrieval or presentation was prevented by an explicit security, privacy, authorization, or application policy.
Status · de:Stale
The artifact remains retained, but its candidate disappeared or its source or retrieved representation has since changed.
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.
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.
When an established predicate states the intended relationship, a publisher SHOULD use it directly. The following table is guidance, not a closed registry.
| Intent | Candidate relationship |
|---|---|
| Additional information | rdfs:seeAlso |
| Defines the context resource | rdfs:isDefinedBy |
| Required for coherence | dcterms:requires |
| Source or derivation | dcterms:source, prov:wasDerivedFrom, or a more precise PROV property |
| Version or replacement | DCTERMS, DCAT, or PROV version relationships |
| Dataset subset or access | VoID or DCAT dataset relationships |
| Formal ontology import | owl: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.
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.
A consumer creates one candidate record for each recognized context-target relationship. The record SHOULD retain:
de:contextResource;de:targetResource;de:discoveryPredicate or de:qualifiedRelationship that exposed it;de:enrichmentRole IRIs;de:discoveredIn;de:sourceGraph, when the relationship occurs in a named graph;de:carrier when extraction from a live host document provides an addressable carrier.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.
A conforming consumer processes discovery in distinct phases:
@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 .
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.
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.
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.
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.
A user interface SHOULD explain both the target and why it was offered. It SHOULD prefer, in order:
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.
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.
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:
A conforming publisher:
rdfs:seeAlso for generic additional information;de: roles when their definitions are accurate; andA conforming consumer:
rdfs:seeAlso candidates;An RDF graph or dataset claiming to be a conforming enrichment record: