# AUTHORED-BY Claude Opus 4.8 (Fable unavailable) — re-review/upgrade candidate # @prefix col: . @prefix core: . @prefix owl: . @prefix rdf: . @prefix rdfs: . @prefix xsd: . @prefix dcterms: . @prefix skos: . @prefix vann: . @prefix gufo: . @prefix schema: . @prefix prov: . # ============================================================================= # Solid COLLECTIBLES sector ontology (KEY=collectibles). # # The provenance / valuation / insurance domain for high-value collectible # assets (art, antiques, wine, watches, cars) — the sector the `Provena` # revenue product (jeswr/product-4) operates in (fedapp:sector). It carries the # QUALIFIER terms that wrap an asset (typically a schema:VisualArtwork or other # schema:CreativeWork/Product in the product's pod) with the provenance-event, # valuation, appraisal and insurance records the product needs — REPLACING the # reserved `provena.example.org/vocab#` namespace (RFC 2606) and the two # NON-EXISTENT schema.org terms the product previously wrote (schema:artworkMedium # and schema:artworkSize both return HTTP 404; the real terms are schema:artMedium # and schema:width/height, applied by the product directly — see the ontology # review, full-solid-ecosystem docs/design/revenue-products-ontology-review.md §1). # # PROV-O IS PRIMARY, USED CORRECTLY (the review's three corrections): # - a provenance event is a col:ProvenanceEvent (an ACTIVITY that prov:used the # asset); only a creation-type event is the asset's prov:wasGeneratedBy — a # sale/exhibition of an EXISTING artwork is not a generation. # - attribution of an event to a party is prov:wasAssociatedWith → a # prov:Agent NODE (never a string literal on prov:wasAttributedTo). # - event timing is prov:startedAtTime / prov:endedAtTime (xsd:dateTime) on the # activity — never prov:atTime (whose domain is prov:InstantaneousEvent), with # col:datePrecision qualifying a date-only precision. # PROV-O is referenced directly (Mode A, futures-alignments-style); it is NOT # owl:imported into the reasoned closure. The linked.art / CIDOC-CRM art-market # profile is an ALIGNMENT REFERENCE only (collectibles-alignments.ttl), never # adopted — full CRM is far too heavy for a consumer product. # # gUFO META-TYPES (each class carries its own AND roots transitively in Core): # ProvenanceEvent = gufo:EventType → root core:Activity (an act that used / # generated the asset; aligned to prov:Activity in the alignments file). # Valuation / Appraisal = gufo:SubKind → root core:Record (structured records # ABOUT the asset carrying an assessed monetary value at a point in time). # InsurancePolicy = gufo:SubKind → root core:InformationResource (a policy # document held in the owner's pod). # EventType / DatePrecision = gufo:Category → root core:Category (rigid # non-sortals whose instances are the coded values, bound to skos:Concept). # # CONTRACT (sector contract R8 §4, F1–F7): imports the gUFO Core; roots every # class transitively in a Core class and carries its gUFO meta-type; CONSTRAINS, # never forks, the vocabularies it reuses (schema.org asset/amount terms, PROV # derivation/attribution, DCT). Open-world by default — the SHACL profile # (collectibles.shacl.ttl) carries the closed-world MUST/SHOULD contract. F5 DL # hygiene: external classes referenced in axioms are declared as punned owl terms. # ============================================================================= a owl:Ontology ; dcterms:title "Solid Collectibles Sector Ontology"@en ; rdfs:label "Solid Collectibles Sector Ontology"@en ; vann:preferredNamespacePrefix "col" ; vann:preferredNamespaceUri "https://w3id.org/jeswr/sectors/collectibles#" ; owl:imports ; owl:versionInfo "0.1.0" ; owl:versionIRI ; dcterms:description """The provenance / valuation / insurance data sector for high-value collectible assets (art, antiques, wine, watches, cars) — the sector the Provena revenue product operates in. The asset itself stays a schema:VisualArtwork / schema:CreativeWork / schema:Product in the pod; this vocabulary adds the qualifier records that wrap it: PROV-O-correct provenance events, assessed valuations and formal appraisals (each on a dual-typed schema:MonetaryAmount value node), and insurance policies. Replaces the reserved provena.example.org namespace and the non-existent schema:artworkMedium/artworkSize terms. Aligns Mode-A to schema.org, PROV-O and the linked.art (CIDOC-CRM) art-market profile in collectibles-alignments.ttl."""@en ; dcterms:modified "2026-07-03"^^xsd:date ; rdfs:comment "Sector ontology for the Provena product (revenue-products ontology review §1). PROV-O primary, used correctly; linked.art alignment is reference-only, never adopted."@en . # ----------------------------------------------------------------------------- # Annotation-property declarations (F5 DL hygiene — match the Core pattern). # ----------------------------------------------------------------------------- dcterms:title a owl:AnnotationProperty . dcterms:description a owl:AnnotationProperty . dcterms:modified a owl:AnnotationProperty . vann:preferredNamespacePrefix a owl:AnnotationProperty . vann:preferredNamespaceUri a owl:AnnotationProperty . skos:definition a owl:AnnotationProperty . skos:scopeNote a owl:AnnotationProperty . skos:notation a owl:AnnotationProperty . # ----------------------------------------------------------------------------- # External classes referenced in axioms below, declared (punned) so the DL # profile holds even when their host ontology is not in the reasoned closure # (the F5 fix the Core + sibling sectors apply). schema.org is NOT owl:imported; # specific terms are referenced and aligned in collectibles-alignments.ttl. # ----------------------------------------------------------------------------- schema:MonetaryAmount a owl:Class ; rdfs:label "schema.org MonetaryAmount"@en ; rdfs:isDefinedBy . skos:Concept a owl:Class ; rdfs:label "SKOS Concept"@en ; rdfs:isDefinedBy . skos:ConceptScheme a owl:Class ; rdfs:label "SKOS Concept Scheme"@en ; rdfs:isDefinedBy . # ============================================================================= # 1. PROVENANCE EVENTS — gufo:EventType, root core:Activity. An act in the life # of an asset (its creation, an acquisition, a sale, a transfer, an # exhibition, a loan, a restoration). The asset is linked from the event by # prov:used (a creation event additionally being the asset's # prov:wasGeneratedBy); the acting party by prov:wasAssociatedWith → a # prov:Agent node; timing by prov:startedAtTime / prov:endedAtTime. # ============================================================================= col:ProvenanceEvent a owl:Class, gufo:EventType ; rdfs:subClassOf core:Activity ; rdfs:label "Provenance Event"@en ; skos:definition "A dated event in the ownership / custody / exhibition history of a collectible asset — a creation, acquisition, sale, transfer, exhibition, loan or restoration. An activity that prov:used the asset (a creation-type event is ALSO the asset's prov:wasGeneratedBy; a sale or exhibition of an existing work is NOT a generation). Its type is a col:eventType coded value; its acting party is a prov:Agent node via prov:wasAssociatedWith; its timing is prov:startedAtTime/prov:endedAtTime, with col:datePrecision qualifying a date-only precision."@en ; skos:scopeNote "gufo:EventType rooting in core:Activity; aligned Mode-A to prov:Activity in collectibles-alignments.ttl."@en . # ============================================================================= # 2. VALUATION & APPRAISAL — gufo:SubKind, root core:Record. Records ABOUT the # asset capturing an assessed monetary value at a point in time. The value is # a SEPARATE dual-typed schema:MonetaryAmount node (schema:value + # schema:currency), linked by col:amount — never a schema:offers link (whose # range is Offer/Demand only; a valuation is not an offer). # ============================================================================= col:Valuation a owl:Class, gufo:SubKind ; rdfs:subClassOf core:Record ; rdfs:label "Valuation"@en ; skos:definition "An assessed market value of a collectible asset at a point in time — an owner-recorded or professionally-supplied estimate. A core:Record ABOUT the asset (via core:about), carrying the assessed amount on a separate schema:MonetaryAmount node (col:amount) and an as-of date (dcterms:date, precision qualified by col:datePrecision). Linked from the asset by col:hasValuation."@en ; skos:scopeNote "gufo:SubKind of core:Record (information object). Distinct from col:Appraisal, which is a FORMAL, appraiser-attributed assessment."@en . col:Appraisal a owl:Class, gufo:SubKind ; rdfs:subClassOf core:Record ; rdfs:label "Appraisal"@en ; skos:definition "A FORMAL valuation of a collectible asset produced by a named appraiser (col:appraiser → a prov:Agent), typically for insurance or sale. A core:Record about the asset carrying the appraised amount (col:amount → a schema:MonetaryAmount node) and an appraisal date. Linked from the asset by col:hasAppraisal."@en ; skos:scopeNote "gufo:SubKind of core:Record. Specialised form of a valuation with an attributed appraiser; kept distinct so an app can require appraiser attribution on appraisals but not on owner estimates."@en . # ============================================================================= # 3. INSURANCE — gufo:SubKind, root core:InformationResource. The insurance # policy covering an asset, a document held in the owner's pod. # ============================================================================= col:InsurancePolicy a owl:Class, gufo:SubKind ; rdfs:subClassOf core:InformationResource ; rdfs:label "Insurance Policy"@en ; skos:definition "An insurance policy covering one or more collectible assets — the policy number (col:policyNumber), the insurer (col:insurer → a prov:Agent), the insured value (col:coverageAmount → a schema:MonetaryAmount node), the premium (col:premium → a schema:MonetaryAmount node) and the renewal date (col:renewalDate). Linked from the asset by col:hasInsurance."@en ; skos:scopeNote "gufo:SubKind of core:InformationResource. A document held in the owner's pod; the asset points at it via col:hasInsurance."@en . # ============================================================================= # 4. CODED-VALUE CLASSES — gufo:Category, root core:Category. Rigid non-sortals # whose instances are the coded values (bound to skos:Concept in the schemes # in §6). Constrain core:Category; never widen it. # ============================================================================= col:EventType a owl:Class, gufo:Category ; rdfs:subClassOf core:Category ; rdfs:label "Event Type"@en ; skos:definition "The kind of a col:ProvenanceEvent: creation / acquisition / sale / transfer / exhibition / loan / restoration. A coded value (core:Category); the members are skos:Concepts in col:eventTypeScheme. Distinguishes which events are the asset's prov:wasGeneratedBy (only col:evt-creation) from those that merely prov:used it."@en ; skos:scopeNote "gufo:Category of core:Category. Members are skos:Concepts in col:eventTypeScheme."@en . col:DatePrecision a owl:Class, gufo:Category ; rdfs:subClassOf core:Category ; rdfs:label "Date Precision"@en ; skos:definition "The precision of a provenance / valuation date when the exact day is unknown: day / month / year / circa. A coded value (core:Category) qualifying an event or valuation date — the honest way to record 'circa 1890' without inventing a false xsd:dateTime precision."@en ; skos:scopeNote "gufo:Category of core:Category. Members are skos:Concepts in col:datePrecisionScheme."@en . # ============================================================================= # 5. PROPERTIES. Domained onto a col: class where a single class owns them; # asset-side link properties (col:hasValuation/hasAppraisal/hasInsurance) are # deliberately DOMAINLESS — the asset is an external schema:CreativeWork the # sector does not re-type, so a domain axiom would force a foreign typing. # ============================================================================= col:hasValuation a owl:ObjectProperty ; rdfs:range col:Valuation ; rdfs:label "has valuation"@en ; skos:definition "Relates a collectible asset to a col:Valuation of it. No rdfs:domain: the asset is an external schema:CreativeWork/VisualArtwork/Product the sector does not re-type."@en . col:hasAppraisal a owl:ObjectProperty ; rdfs:range col:Appraisal ; rdfs:label "has appraisal"@en ; skos:definition "Relates a collectible asset to a formal col:Appraisal of it. Domainless — the asset is an external type."@en . col:hasInsurance a owl:ObjectProperty ; rdfs:range col:InsurancePolicy ; rdfs:label "has insurance"@en ; skos:definition "Relates a collectible asset to the col:InsurancePolicy covering it. Domainless — the asset is an external type."@en . col:eventType a owl:ObjectProperty ; rdfs:domain col:ProvenanceEvent ; rdfs:range col:EventType ; rdfs:label "event type"@en ; skos:definition "The coded kind of a provenance event (col:evt-creation … col:evt-restoration). Determines whether the event is the asset's prov:wasGeneratedBy (creation only) or merely prov:used it."@en . col:amount a owl:ObjectProperty ; rdfs:range schema:MonetaryAmount ; rdfs:label "amount"@en ; skos:definition "The assessed monetary value carried by a col:Valuation or col:Appraisal — a SEPARATE schema:MonetaryAmount node (schema:value + schema:currency), the CapNote-proven amount shape. No rdfs:domain: shared by Valuation and Appraisal (a domain union axiom would over-constrain). NEVER a schema:offers link (whose range is Offer/Demand only)."@en . col:appraiser a owl:ObjectProperty ; rdfs:domain col:Appraisal ; rdfs:range core:Agent ; rdfs:label "appraiser"@en ; skos:definition "The agent (a prov:Agent / core:Agent, e.g. an appraisal house) who produced a formal appraisal."@en . col:policyNumber a owl:DatatypeProperty ; rdfs:domain col:InsurancePolicy ; rdfs:range xsd:string ; rdfs:label "policy number"@en ; skos:definition "The insurer's policy reference number of an insurance policy."@en . col:insurer a owl:ObjectProperty ; rdfs:domain col:InsurancePolicy ; rdfs:range core:Agent ; rdfs:label "insurer"@en ; skos:definition "The agent (an insurer organization) underwriting an insurance policy."@en . col:coverageAmount a owl:ObjectProperty ; rdfs:domain col:InsurancePolicy ; rdfs:range schema:MonetaryAmount ; rdfs:label "coverage amount"@en ; skos:definition "The insured value of an insurance policy — a separate schema:MonetaryAmount node."@en . col:premium a owl:ObjectProperty ; rdfs:domain col:InsurancePolicy ; rdfs:range schema:MonetaryAmount ; rdfs:label "premium"@en ; skos:definition "The premium payable for an insurance policy — a separate schema:MonetaryAmount node."@en . col:renewalDate a owl:DatatypeProperty ; rdfs:domain col:InsurancePolicy ; rdfs:range xsd:date ; rdfs:label "renewal date"@en ; skos:definition "The date an insurance policy is next due for renewal."@en . col:datePrecision a owl:ObjectProperty ; rdfs:range col:DatePrecision ; rdfs:label "date precision"@en ; skos:definition "The precision of a provenance-event or valuation date (col:precision-day … col:precision-circa) — the honest qualifier for a date whose exact day is unknown. No rdfs:domain: it qualifies events AND valuations."@en . # ============================================================================= # 6. CODED-VALUE SCHEMES — the canonical value sets (skos:Concept members). Each # member is typed with its col: coded class AND skos:Concept, carries # skos:prefLabel + skos:definition (F1 term hygiene) + skos:notation (the # plain token a UI uses), and skos:inScheme its scheme. Seeds, not law — # communities may cross-map (skos:closeMatch) their own value sets. # ============================================================================= col:eventTypeScheme a skos:ConceptScheme ; rdfs:label "Provenance event type scheme"@en ; skos:definition "The coded kinds of a col:ProvenanceEvent."@en . col:evt-creation a col:EventType, skos:Concept ; skos:inScheme col:eventTypeScheme ; skos:notation "creation" ; skos:prefLabel "Creation"@en ; skos:definition "The making of the asset by its creator — the ONE event that is the asset's prov:wasGeneratedBy."@en . col:evt-acquisition a col:EventType, skos:Concept ; skos:inScheme col:eventTypeScheme ; skos:notation "acquisition" ; skos:prefLabel "Acquisition"@en ; skos:definition "The current owner's acquisition of the asset (purchase, gift, inheritance)."@en . col:evt-sale a col:EventType, skos:Concept ; skos:inScheme col:eventTypeScheme ; skos:notation "sale" ; skos:prefLabel "Sale"@en ; skos:definition "A sale of the asset from one party to another (an activity that prov:used the asset — never a generation)."@en . col:evt-transfer a col:EventType, skos:Concept ; skos:inScheme col:eventTypeScheme ; skos:notation "transfer" ; skos:prefLabel "Transfer"@en ; skos:definition "A non-sale transfer of custody or ownership (a gift, a loan return, an estate transfer)."@en . col:evt-exhibition a col:EventType, skos:Concept ; skos:inScheme col:eventTypeScheme ; skos:notation "exhibition" ; skos:prefLabel "Exhibition"@en ; skos:definition "A public showing of the asset at a gallery, museum or fair."@en . col:evt-loan a col:EventType, skos:Concept ; skos:inScheme col:eventTypeScheme ; skos:notation "loan" ; skos:prefLabel "Loan"@en ; skos:definition "A temporary loan of the asset to an institution or another party."@en . col:evt-restoration a col:EventType, skos:Concept ; skos:inScheme col:eventTypeScheme ; skos:notation "restoration" ; skos:prefLabel "Restoration"@en ; skos:definition "A conservation or restoration treatment applied to the asset."@en . col:datePrecisionScheme a skos:ConceptScheme ; rdfs:label "Date precision scheme"@en ; skos:definition "The coded precision levels for a provenance / valuation date."@en . col:precision-day a col:DatePrecision, skos:Concept ; skos:inScheme col:datePrecisionScheme ; skos:notation "day" ; skos:prefLabel "Day"@en ; skos:definition "The date is known to the exact day."@en . col:precision-month a col:DatePrecision, skos:Concept ; skos:inScheme col:datePrecisionScheme ; skos:notation "month" ; skos:prefLabel "Month"@en ; skos:definition "The date is known only to the month."@en . col:precision-year a col:DatePrecision, skos:Concept ; skos:inScheme col:datePrecisionScheme ; skos:notation "year" ; skos:prefLabel "Year"@en ; skos:definition "The date is known only to the year."@en . col:precision-circa a col:DatePrecision, skos:Concept ; skos:inScheme col:datePrecisionScheme ; skos:notation "circa" ; skos:prefLabel "Circa"@en ; skos:definition "The date is approximate ('circa') — a best estimate, not an exact value."@en . # ============================================================================= # SECTOR MARKER — the IRI an app's fedapp:sector names to declare it operates in # the collectibles (art/collectibles provenance) sector. A skos:Concept in the # federation sector register; dereferences to this ontology. # ============================================================================= a skos:Concept ; rdfs:label "Collectibles sector"@en ; rdfs:comment "The Collectibles (art / collectibles provenance, valuation and insurance) data sector. The value an app's fedapp:sector names in its Client Identifier Document to declare it operates over collectible-asset provenance data — the sector the Provena product declares. Backed by this sector ontology."@en ; rdfs:isDefinedBy ; skos:prefLabel "Collectibles"@en .