This is a Technical Note of the W3C AI Knowledge Representation Community Group (AIKR CG). It is not a W3C Standard and does not represent consensus of W3C Membership. It is published to inform discussion at the W3C/GS1 E-commerce for Humans and AI Agents workshop and to invite contributions in the group repository.
Related work: this Note complements the group's
Inventory of Efforts
Related to the Agent-to-Web Framework (A2WF), prepared in response to the A2WF Community Group
(the siteai.json agent-permissions initiative). Where that inventory maps efforts at
the framework level — protocols, vocabularies and trust mechanisms across the
agentic-web landscape — this Note drills into the e-commerce vocabulary layer
beneath them.
As large language models and AI agents become intermediaries between content and the people who consume it, the publisher's question shifts from "how are my products found by search engines?" to "how are my products discovered, interpreted, and acted upon by AI agents?" At the data layer this is a knowledge-representation question: it depends on which vocabulary a catalogue is expressed in and whether the agent's protocol consumes it.
This Note (a) inventories the existing open vocabulary stack for e-commerce, with provenance and cross-namespace mappings; and (b) analyses what that stack lacks for autonomous, transacting agents, proposing that the gaps be filled by extension and crosswalk rather than by protocol-private forks. It is intended as reference material and as the evidence base for an interoperability-layer proposal aligned with the group's Agent Interoperability work.
A single JSON-LD @context typically mixes namespaces: schema: for the
core commerce model, gs1: for richer product and supply-chain detail, and
unece: (UN/CEFACT) for units and measures. GoodRelations supplies the conceptual
e-commerce core that was folded into schema.org in November 2012 [[GR-SCHEMA-2012]]; its original
namespace remains authoritative in full RDF/OWL/SPARQL environments.
{ "@context": {
"@vocab": "https://schema.org/",
"gs1": "https://ref.gs1.org/voc/",
"unece": "https://vocabulary.uncefact.org/",
"gr": "http://purl.org/goodrelations/v1#"
} }
Not a vocabulary but the W3C syntax that carries the vocabularies and links them [[JSON-LD11]].
| Keyword | Role |
|---|---|
@context | Maps short terms to IRIs; declares which vocabularies are in use |
@vocab | Default vocabulary for unprefixed terms (usually schema.org) |
@id | Global identifier (IRI) for a node — the basis of Linked Data |
@type | Declares the class of a node (e.g. Product, Offer) |
@graph | A set of nodes — used for product lists / multi-entity payloads |
@value, @language | Literal value and its language tag |
@container, @list, @set | Ordering / collection semantics |
Since the November 2012 integration, GoodRelations is the e-commerce core of schema.org [[GR-SCHEMA-2012]] [[SCHEMA-PRODUCT]]. The GR origin column shows the originating GoodRelations class or property where applicable.
| schema.org type | Role | GR origin |
|---|---|---|
Product | A product (good/service offered for sale) | gr:ProductOrService |
ProductModel | A datasheet/model (vs. an instance) | gr:ProductOrServiceModel |
IndividualProduct | A single identifiable instance | gr:Individual |
SomeProducts | An anonymous quantity of items | gr:SomeItems |
ProductGroup / ProductCollection | Variant groupings / collections | — (later additions) |
Offer | An offer to transfer rights / provide a service | gr:Offering |
AggregateOffer | A set of offers (price range, count) | — |
Demand | A wanted/sought offer (buy-side) | gr:Offering (seek) |
PriceSpecification | A price structure | gr:PriceSpecification |
UnitPriceSpecification | Price per unit of measure | gr:UnitPriceSpecification |
DeliveryChargeSpecification | Shipping/delivery cost | gr:DeliveryChargeSpecification |
PaymentChargeSpecification | Surcharge per payment method | gr:PaymentChargeSpecification |
TypeAndQuantityNode | "N units of product X" within a bundle | gr:TypeAndQuantityNode |
QuantitativeValue | A measured value with unit | gr:QuantitativeValue |
WarrantyPromise | Warranty terms attached to an offer | gr:WarrantyPromise |
BusinessFunction (enum) | Sell, Lease, Repair, Dispose… | gr:BusinessFunction |
DeliveryMethod (enum) | Mail, freight, own fleet, pickup… | gr:DeliveryMethod |
PaymentMethod (enum) | Cash, card, bank transfer… | gr:PaymentMethod |
OfferItemCondition (enum) | New / Used / Refurbished / Damaged | gr:Condition |
Organization | The selling business entity | gr:BusinessEntity |
Brand | A brand associated with a product/offer | gr:Brand |
OpeningHoursSpecification | Store opening hours | gr:OpeningHoursSpecification |
MerchantReturnPolicy | Return/refund terms | — (later addition) |
Review, AggregateRating | Ratings and reviews | — |
| schema.org property | Role | GR origin |
|---|---|---|
offers | Links a Product to its Offer(s) | gr:offers |
seller | The Organization making the offer | gr:offers (inverse) |
price | The price value | gr:hasCurrencyValue |
priceCurrency | ISO 4217 currency code | gr:hasCurrency |
priceSpecification | Links to a PriceSpecification | gr:hasPriceSpecification |
businessFunction | Sell / lease / repair… | gr:hasBusinessFunction |
itemCondition | New / used / refurbished | gr:condition |
availability | InStock / OutOfStock / PreOrder… | gr:hasInventoryLevel (related) |
eligibleQuantity | Order quantity bounds | gr:hasEligibleQuantity |
eligibleRegion | Geographic eligibility | gr:eligibleRegions |
acceptedPaymentMethod | Accepted payment methods | gr:acceptedPaymentMethods |
validFrom, validThrough | Offer validity window | gr:validFrom, gr:validThrough |
gtin, gtin8/12/13/14 | GS1 trade item numbers | gr:hasEAN_UCC-13 / gr:hasGTIN-14 |
mpn, sku | Manufacturer part / stock-keeping numbers | gr:hasMPN / gr:hasStockKeepingUnit |
brand | Brand | gr:hasBrand |
hasGS1DigitalLink | Link to a GS1 Digital Link URI | — (GS1 bridge) |
Authored by Martin Hepp [[GOODRELATIONS]]; an independent OWL vocabulary that remains primary in
RDF/RDFa/OWL/SPARQL contexts, with mapping axioms to schema.org. At integration the overlap was
small (only 5 of schema.org's 315 classes coincided with 27 GoodRelations classes), so most GR
classes were new additions rather than duplicates. Use this mapping when consuming Linked
Data published in the original http://purl.org/goodrelations/v1# namespace.
| GoodRelations term | schema.org equivalent | Notes |
|---|---|---|
gr:BusinessEntity | Organization | The legal entity offering goods/services |
gr:Offering | Offer | Core "offer to sell/lease/repair…" node |
gr:ProductOrService | Product / Service | Generic offered item |
gr:ProductOrServiceModel | ProductModel | A make/model datasheet |
gr:Individual / gr:SomeItems | IndividualProduct / SomeProducts | Instance vs. anonymous batch |
gr:PriceSpecification | PriceSpecification | Price structure |
gr:UnitPriceSpecification | UnitPriceSpecification | Price per unit |
gr:TypeAndQuantityNode | TypeAndQuantityNode | Quantity of a product in a bundle |
gr:BusinessFunction | BusinessFunction | Sell/Lease/Repair/Dispose enumeration |
gr:hasBusinessFunction | businessFunction | Renamed on integration |
gr:hasPriceSpecification | priceSpecification | Renamed on integration |
gr:hasCurrency / gr:hasCurrencyValue | priceCurrency / price | Split into two schema.org properties |
The first large-scale external extension to schema.org [[GS1-WEBVOC]]: it extends
schema.org under Linked Data principles with explicit mappings, adding supply-chain and
consumer-facing master data (initial focus: apparel, footwear, food/beverage/tobacco). Properties
derive from existing GS1 standards (GDSN, GS1 Source, GPC); Offer is a GS1-specific
addition. The complete normative list is the JSON-LD ontology at
https://ref.gs1.org/voc/data/gs1Voc.jsonld; terms are ratified via the GS1 Global
Standards Management Process and maintained at github.com/gs1/WebVoc.
| GS1 term | Kind | Role |
|---|---|---|
gs1:Product | class | Trade item (extends schema:Product) |
gs1:Offer | class | Product offered by a party for a price (GS1-specific) |
gs1:Organization | class | Party / business entity |
gs1:Clothing | class | Apparel trade item (specialised product class) |
gs1:OrganicClaimDetails | class | Structured organic-certification claim |
gs1:gtin | property | Global Trade Item Number |
gs1:brand | property | Brand of the trade item |
gs1:netContent | property | Net quantity/content with unit |
gs1:packagingType | property | Packaging type code |
gs1:consumerProductVariant | property | Links variant trade items |
GS1 Digital Link expresses GS1 keys (GTIN, batch/lot, serial…) as a resolvable Web URI [[GS1-DIGITAL-LINK]]; the resolver returns typed links to related resources. The link-type idea is rooted in Web Linking / HATEOAS / REST: it is a resource-pointer layer, not (yet) a machine-actionable API-contract layer — a distinction central to the gap analysis. Several link types are already agent-relevant (marked ●).
| Group | Link types |
|---|---|
| Product info | pip, instructions, quickStartGuide, whatsInTheBox, ingredientsInfo, nutritionalInfo, allergenInfo, faqs, tutorial, smartLabel, relatedImage, relatedVideo |
| Trust / verification ● | jws (JSON Web Signature), verificationService, certificationInfo, recallStatus, safetyInfo, masterData |
| Traceability ● | traceability, epcis, dpp (Digital Product Passport), sustainabilityInfo |
| Transaction / commerce ● | paymentLink, loyaltyProgram, subscribe, promotion, scheduleTime (reservation), registerProduct (warranty), purchaseSuppliesOrAccessories, hasRetailers |
| Org / location | homepage, locationInfo, logisticsInfo, openingHoursInfo, support, registryEntry, socialMedia |
| Reviews / engagement | review, leaveReview, userAgreement, reportFound |
Supplies units of measure and trade/measurement types that complement schema.org and GS1 in
product markup (e.g. unece:MeasureType, unece:MeasureTypeCode)
[[UNCEFACT-VOC]]. Frequently co-used in the same JSON-LD @context for precise units.
| Vocabulary | Maintainer | Namespace | Status in the stack |
|---|---|---|---|
| JSON-LD | W3C | (syntax) | Serialization / linking layer |
| schema.org | Google, Microsoft/Bing, Yahoo, Yandex | https://schema.org/ | Core web commerce vocabulary |
| GoodRelations | Martin Hepp | http://purl.org/goodrelations/v1# | E-commerce core of schema.org since Nov 2012; independent in RDF/OWL |
| GS1 Web Vocabulary | GS1 | https://ref.gs1.org/voc/ | External extension of schema.org; supply-chain + consumer detail |
| UN/CEFACT | UNECE | https://vocabulary.uncefact.org/ | Units / measures / trade terms |
Every vocabulary above was built to describe products for two readers: a human browsing a page, and a search engine building an index. Autonomous agents that discover, verify, negotiate, transact and act under delegated authority are a third consumer the stack was not designed for. They need three things the descriptive stack underprovides:
paymentLink, registerProduct, scheduleTime, …) point
to where actions happen but do not describe the contract of those actions.jws,
verificationService); they are not yet bound into the Offer model as a
signed-offer pattern.Principle: extend and crosswalk, don't fork. Most needs below can be met by binding existing W3C primitives to schema.org/GS1 rather than inventing protocol-private schemas — which is what keeps the Web open across MCP, UCP and ACP [[AGENT-PROTO-SURVEY]] [[ACP]] [[UCP]].
| # | Agent use case | What the stack has today | Missing entities / vocabulary | Candidate standard to extend with |
|---|---|---|---|---|
| 1 | Discover what I can do here (checkout, returns, subscribe) | GS1 link types point to pages/APIs; schema:potentialAction is thin | Machine-actionable affordance/operation descriptions with typed inputs, endpoints, preconditions | schema.org Actions (EntryPoint, *Action); W3C Hydra; W3C Web of Things Thing Description |
| 2 | Prove who I am and on whose behalf | Nothing for agent identity/delegation | Agent identity + mandate/authority (scope, spend limit, purpose, expiry) | W3C DIDs; W3C Verifiable Credentials; open mandate vocabulary (cf. AP2 consent proofs) |
| 3 | Trust the data is authentic and current | jws, verificationService link types; priceValidUntil | Signed/attested Offer pattern; enforceable freshness | W3C PROV-O; VC-wrapped offers; C2PA / Content Credentials for media |
| 4 | Negotiate / get a quote / apply loyalty | gr:Demand; loyaltyProgram link | Negotiation vocabulary: RFQ, counter-offer, conditional & disclosed personalised pricing | New extension over GoodRelations Offer/Demand |
| 5 | Drive a transaction deterministically | schema:Order, OrderStatus (thin) | Session/transaction state machine, idempotency keys, typed error semantics | Extend schema.org Order; align with ACP/UCP checkout state models |
| 6 | Respect consent, privacy & usage policy | None wired to commerce | Machine-readable policy/consent: what the agent may share/do; rights on the data | W3C ODRL; W3C Data Privacy Vocabulary (DPV) |
| 7 | Keep the open-Web incentive: credit creators | None | Attribution / value-flow vocabulary for agent-mediated use and sales | New extension; relate to TDM Reservation Protocol + ODRL |
| 8 | Compare & substitute products | isAccessoryOrSparePartFor, isSimilarTo, isVariantOf (thin) | Agent-grade equivalence / substitutability / compatibility semantics + shared classification | GS1 GPC, eCl@ss, UNSPSC, Google Product Taxonomy as alignment targets |
| 9 | Read sustainability & regulatory attributes | dpp, sustainabilityInfo, OrganicClaimDetails, certificationInfo | Full Digital Product Passport data model bound to the offer | GS1 DPP work + EU Digital Product Passport alignment |
| 10 | Assess and be assessed for trust (reputation) | review, AggregateRating (about products) | Agent/merchant reputation & attestation — trust signals about the actors | VC-based reputation; extend Review/Rating to agent actors |
Rows 1–3 and 7 of the gap table are where proprietary protocols are currently filling the vacuum each in their own way — ACP's feed and checkout API, UCP's capability profiles, AP2's consent proofs. If affordance, authority and attribution semantics are standardised as open extensions to the shared vocabulary, content stays publishable once and remains legible to every agent ecosystem; if they are not, each protocol forks its own and the publisher is back to an N×N integration burden. A vocabulary-neutral interoperability layer — the direction this group proposes — could provide the crosswalk that helps prevent such a fork and keep the Web open.
schema.org and GoodRelations terms and the GoodRelations→schema.org mappings are drawn from the published vocabularies and the 2012 integration record. GS1 classes, properties and the complete link-type set are verified against the live GS1 Web Vocabulary; food/allergen/nutrition property names should be confirmed against the JSON-LD ontology dataset before normative use. Candidate standards named in the gap table are existing W3C or industry specifications cited as extension targets, not as current bindings.