@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix schema: <https://schema.org/> .
@prefix vann: <http://purl.org/vocab/vann/> .
@prefix voaf: <http://purl.org/vocommons/voaf#> .
@prefix cc: <http://creativecommons.org/ns#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix vs: <http://www.w3.org/2003/06/sw-vocab-status/ns#> .
@prefix dcat: <http://www.w3.org/ns/dcat#> .
@prefix dpp: <https://ns.verisav.fr/dpp#> .
@prefix rma: <https://ns.verisav.fr/rma#> .
@prefix wty: <https://ns.verisav.fr/wty#> .

# ============================================================================
# Verisav Warranty & Contracts Vocabulary
# Machine-Readable Warranties and Contracts for SAV Automation
# ============================================================================

<https://ns.verisav.fr/wty#> a owl:Ontology, voaf:Vocabulary ;
    rdfs:label "Verisav Warranty & Contracts Vocabulary"@en ;
    rdfs:label "Vocabulaire Garanties et Contrats Verisav"@fr ;
    dcterms:title "Verisav Warranty & Contracts Vocabulary"@en ;
    dcterms:description "Vocabulary for machine-readable warranties and service contracts aligned with EU product compliance context (ESPR / Digital Product Passport ecosystem): structured coverage, payment rules, and claim assessment data interoperable with DPP and ticketing (RMA). Execution of payment logic requires an application or rules layer on top of this ontology."@en ;
    dcterms:description "Vocabulaire pour garanties et contrats de service lisibles par machine, aligné sur le contexte européen du passeport produit numérique (ESPR) : couverture structurée, règles de paiement et évaluation de réclamations, interopérable avec DPP et RMA. L’exécution des règles de paiement suppose une couche applicative ou de règles au-dessus de cette ontologie."@fr ;
    rdfs:comment "Version 1.2.2 (2026-05-07): Aligned rdfs:seeAlso with dpp 1.5.2 — Data Act, Interoperable Europe Act, CIRPASS-2, CircularData, data.europa.eu & GS1 Europe DPP, GS1 URI syntax, W3C DID 1.0, LOV/W3ID/GitHub/Zenodo for WTY. Version 1.2.1: DPP policy block. Version 1.2.0: paymentSplit OWL fix."@en ;
    rdfs:comment "Version 1.2.2 (2026-05-07): rdfs:seeAlso aligné sur dpp 1.5.2 (Data Act, interopérabilité, communauté DPP, GS1, DID, LOV/W3ID/GitHub/Zenodo). Voir 1.2.1–1.0.0."@fr ;
    
    # Technical Metadata (VOAF/VANN)
    vann:preferredNamespacePrefix "wty" ;
    vann:preferredNamespaceUri "https://ns.verisav.fr/wty#" ;
    
    # Versioning & Dates
    owl:versionInfo "1.2.2" ;
    owl:versionIRI <https://ns.verisav.fr/wty/1.2.2> ;
    dcterms:created "2025-12-16"^^xsd:date ;
    dcterms:issued "2026-05-07"^^xsd:date ;
    dcterms:modified "2026-05-07"^^xsd:date ;
    
    # Authors & Rights
    dcterms:creator [
        a foaf:Person ;
        foaf:name "Kévin Boutillier" ;
        rdfs:seeAlso <https://orcid.org/0009-0001-0356-4421> ;
        rdfs:seeAlso <https://www.verisav.fr/en/founders/kevin-boutillier> ;
        rdfs:seeAlso <https://www.linkedin.com/in/kévinboutillier>
    ] ;
    dcterms:publisher <https://www.verisav.fr> ;
    dcterms:license <https://creativecommons.org/licenses/by/4.0/> ;
    cc:license <https://creativecommons.org/licenses/by/4.0/> ;
    dcterms:rights "Copyright © 2025 Verisav SAS. All rights reserved."@en ;
    dcterms:rights "Copyright © 2025 Verisav SAS. Tous droits réservés."@fr ;
    
    # Distributions (formats disponibles)
    dcat:distribution [
        a dcat:Distribution ;
        dcterms:format "text/turtle" ;
        dcat:downloadURL <https://ns.verisav.fr/wty/wty.ttl>
    ] ;
    dcat:distribution [
        a dcat:Distribution ;
        dcterms:format "application/ld+json" ;
        dcat:downloadURL <https://ns.verisav.fr/wty/wty.jsonld>
    ] ;
    dcat:distribution [
        a dcat:Distribution ;
        dcterms:format "application/rdf+xml" ;
        dcat:downloadURL <https://ns.verisav.fr/wty/wty.xml>
    ] ;
    dcat:distribution [
        a dcat:Distribution ;
        dcterms:format "text/plain" ;
        dcterms:title "SHA-256 checksums"@en ;
        dcat:downloadURL <https://ns.verisav.fr/wty/CHECKSUMS.sha256>
    ] ;
    dcat:distribution [
        a dcat:Distribution ;
        dcterms:format "text/turtle" ;
        dcterms:title "SHACL validation shapes (WTY)"@en ;
        dcat:downloadURL <https://ns.verisav.fr/wty/validation/wty.shacl.ttl>
    ] ;
    dcat:distribution [
        a dcat:Distribution ;
        dcterms:format "application/schema+json" ;
        dcterms:title "JSON Schema validation (WTY)"@en ;
        dcat:downloadURL <https://ns.verisav.fr/wty/validation/wty.schema.json>
    ] ;
    dcat:distribution [
        a dcat:Distribution ;
        dcterms:format "application/ld+json" ;
        dcat:accessURL <https://www.verisav.fr/api/wty/wty.jsonld> ;
        dcterms:title "WTY Vocabulary (JSON-LD via API)"@en
    ] ;
    dcat:distribution [
        a dcat:Distribution ;
        dcterms:format "application/graphql" ;
        dcat:accessURL <https://www.verisav.fr/api/graphql> ;
        dcat:endpointURL <https://www.verisav.fr/api/graphql> ;
        dcterms:title "Verisav Vocabularies GraphQL API"@en ;
        dcterms:title "API GraphQL Vocabulaires Verisav"@fr ;
        dcterms:description "GraphQL API for querying all Verisav vocabularies (DPP, RMA, WTY). Supports introspection, multilingual labels, and real-time vocabulary access."@en ;
        dcterms:description "API GraphQL pour interroger tous les vocabulaires Verisav (DPP, RMA, WTY). Supporte l'introspection, les labels multilingues et l'accès en temps réel aux vocabulaires."@fr
    ] ;
    dcat:distribution [
        a dcat:Distribution ;
        dcterms:format "application/sparql-results+json" ;
        dcat:accessURL <https://www.verisav.fr/api/sparql> ;
        dcat:endpointURL <https://www.verisav.fr/api/sparql> ;
        dcterms:title "Verisav Vocabularies SPARQL Endpoint"@en ;
        dcterms:title "Endpoint SPARQL Vocabulaires Verisav"@fr ;
        dcterms:description "Public SPARQL 1.1 endpoint for querying all Verisav vocabularies (DPP, RMA, WTY). GET/POST with query parameter; responses in application/sparql-results+json or application/sparql-results+xml."@en ;
        dcterms:description "Endpoint SPARQL 1.1 public pour interroger tous les vocabulaires Verisav (DPP, RMA, WTY). GET/POST avec paramètre query ; réponses en application/sparql-results+json ou application/sparql-results+xml."@fr
    ] ;
    
    # API GraphQL endpoint (direct reference)
    dcat:endpointURL <https://www.verisav.fr/api/graphql> ;
    dcat:accessURL <https://www.verisav.fr/api/graphql> ;
    # API SPARQL endpoint (direct reference)
    dcat:endpointURL <https://www.verisav.fr/api/sparql> ;
    dcat:accessURL <https://www.verisav.fr/api/sparql> ;
    rdfs:comment "This vocabulary is accessible via GraphQL API at https://www.verisav.fr/api/graphql and via SPARQL endpoint at https://www.verisav.fr/api/sparql. Use vocabulary(id: \"wty\") for GraphQL, or SPARQL over the combined DPP, RMA, WTY graph."@en ;
    rdfs:comment "Ce vocabulaire est accessible via l'API GraphQL à https://www.verisav.fr/api/graphql et via l'endpoint SPARQL à https://www.verisav.fr/api/sparql. Utilisez vocabulary(id: \"wty\") pour GraphQL, ou SPARQL sur le graphe combiné DPP, RMA, WTY."@fr ;
    
    # API de recherche
    schema:potentialAction [
        a schema:SearchAction ;
        schema:target <https://www.verisav.fr/api/v1/vocabulary/wty/search?q=%7Bquery%7D> ;
        schema:query-input "required name=query"
    ] ;
    
    # Relations
    owl:imports <https://schema.org/> ;
    owl:imports <https://ns.verisav.fr/dpp#> ;
    owl:imports <https://ns.verisav.fr/rma#> ;
    rdfs:seeAlso <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R1781> ;
    rdfs:seeAlso <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:52025DC0187> ;
    rdfs:seeAlso <https://commission.europa.eu/energy-climate-change-environment/standards-tools-and-labels/products-labelling-rules-and-requirements/ecodesign-sustainable-products-regulation_en> ;
    rdfs:seeAlso <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32023R1542> ;
    rdfs:seeAlso <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32023R2854> ;
    rdfs:seeAlso <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R903> ;
    rdfs:seeAlso <https://publications.jrc.ec.europa.eu/repository/handle/JRC145830> ;
    rdfs:seeAlso <https://standards.cencenelec.eu/dyn/www/f?p=305:7:0:25:::FSP_ORG_ID,FSP_LANG_ID:3342699> ;
    rdfs:seeAlso <https://www.cencenelec.eu/news-events/news/2025/brief-news/2025-12-19-moving-forward-with-espr/> ;
    rdfs:seeAlso <https://cirpass2.eu/> ;
    rdfs:seeAlso <https://circular-data.org/> ;
    rdfs:seeAlso <https://data.europa.eu/en/news-events/news/eus-digital-product-passport-advancing-transparency-and-sustainability> ;
    rdfs:seeAlso <https://gs1.eu/activities/digital-product-passport/on-the-eu-digital-product-passport/> ;
    rdfs:seeAlso <https://ref.gs1.org/standards/digital-link/uri-syntax> ;
    rdfs:seeAlso <https://untp.unece.org/docs/specification/DigitalProductPassport/> ;
    rdfs:seeAlso <https://www.w3.org/TR/did-1.0/> ;
    rdfs:seeAlso <https://lov.linkeddata.es/dataset/lov/vocabs/wty> ;
    rdfs:seeAlso <https://w3id.org/verisav/wty> ;
    rdfs:seeAlso <https://github.com/Verisav/vocabularies> ;
    rdfs:seeAlso <https://doi.org/10.5281/zenodo.18352147> .

# ============================================================================
# CLASSES
# ============================================================================

wty:Warranty a owl:Class ;
    rdfs:label "Warranty"@en, "Garantie"@fr ;
    rdfs:comment "An extended warranty that defines coverage, exclusions, payment rules, and conditions in a machine-readable format for automation."@en ;
    rdfs:subClassOf dpp:Warranty, schema:WarrantyScope ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:Contract a owl:Class ;
    rdfs:label "Contract"@en, "Contrat"@fr ;
    rdfs:comment "A contract (maintenance, extension, insurance) that defines terms and coverage for after-sales service."@en ;
    rdfs:subClassOf schema:Contract ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:Coverage a owl:Class ;
    rdfs:label "Coverage"@en, "Couverture"@fr ;
    rdfs:comment "Defines what is covered by a warranty or contract (components, defect types, repair types, periods)."@en ;
    rdfs:subClassOf schema:Thing ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:Exclusion a owl:Class ;
    rdfs:label "Exclusion"@en, "Exclusion"@fr ;
    rdfs:comment "Defines what is NOT covered by a warranty or contract (excluded defect types, causes, components)."@en ;
    rdfs:subClassOf schema:Thing ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:PaymentRule a owl:Class ;
    rdfs:label "Payment Rule"@en, "Règle de Paiement"@fr ;
    rdfs:comment "Defines who pays for what (diagnostic, repair, parts, travel) and payment splits between parties."@en ;
    rdfs:subClassOf schema:Thing ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:Condition a owl:Class ;
    rdfs:label "Condition"@en, "Condition"@fr ;
    rdfs:comment "A condition that must be met for warranty or contract to apply (normal use, proper installation, documentation, etc.)."@en ;
    rdfs:subClassOf schema:Thing ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:Limit a owl:Class ;
    rdfs:label "Limit"@en, "Limite"@fr ;
    rdfs:comment "Defines limits (financial, temporal, quantity) for warranty or contract coverage."@en ;
    rdfs:subClassOf schema:Thing ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:ClaimAssessment a owl:Class ;
    rdfs:label "Claim Assessment"@en, "Évaluation de Réclamation"@fr ;
    rdfs:comment "Automated assessment of a claim against warranty or contract, determining coverage and payment responsibility."@en ;
    rdfs:subClassOf schema:Thing ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:Invoice a owl:Class ;
    rdfs:label "Invoice"@en, "Facture"@fr ;
    rdfs:comment "An invoice generated automatically based on warranty/contract payment rules and claim assessment."@en ;
    rdfs:subClassOf schema:Invoice ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

# ============================================================================
# OBJECT PROPERTIES
# ============================================================================

# Core Relations
wty:definesCoverage a owl:ObjectProperty ;
    rdfs:label "defines coverage"@en, "définit la couverture"@fr ;
    rdfs:comment "Links a warranty or contract to its coverage definition."@en ;
    rdfs:domain wty:Warranty, wty:Contract ;
    rdfs:range wty:Coverage ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:definesExclusions a owl:ObjectProperty ;
    rdfs:label "defines exclusions"@en, "définit les exclusions"@fr ;
    rdfs:comment "Links a warranty or contract to its exclusion definitions."@en ;
    rdfs:domain wty:Warranty, wty:Contract ;
    rdfs:range wty:Exclusion ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:definesPaymentRule a owl:ObjectProperty ;
    rdfs:label "defines payment rule"@en, "définit la règle de paiement"@fr ;
    rdfs:comment "Links a warranty or contract to its payment rule."@en ;
    rdfs:domain wty:Warranty, wty:Contract ;
    rdfs:range wty:PaymentRule ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:definesConditions a owl:ObjectProperty ;
    rdfs:label "defines conditions"@en, "définit les conditions"@fr ;
    rdfs:comment "Links a warranty or contract to its conditions."@en ;
    rdfs:domain wty:Warranty, wty:Contract ;
    rdfs:range wty:Condition ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:definesLimits a owl:ObjectProperty ;
    rdfs:label "defines limits"@en, "définit les limites"@fr ;
    rdfs:comment "Links a warranty or contract to its limits."@en ;
    rdfs:domain wty:Warranty, wty:Contract ;
    rdfs:range wty:Limit ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

# Assessment and Automation
wty:triggersAssessment a owl:ObjectProperty ;
    rdfs:label "triggers assessment"@en, "déclenche l'évaluation"@fr ;
    rdfs:comment "Links a ticket or claim to a claim assessment."@en ;
    rdfs:domain rma:Ticket, dpp:WarrantyClaim ;
    rdfs:range wty:ClaimAssessment ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:assessesClaim a owl:ObjectProperty ;
    rdfs:label "assesses claim"@en, "évalue la réclamation"@fr ;
    rdfs:comment "Links a claim assessment to the ticket or claim being assessed."@en ;
    rdfs:domain wty:ClaimAssessment ;
    rdfs:range rma:Ticket, dpp:WarrantyClaim ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:checksCoverage a owl:ObjectProperty ;
    rdfs:label "checks coverage"@en, "vérifie la couverture"@fr ;
    rdfs:comment "Links a claim assessment to the coverage being checked."@en ;
    rdfs:domain wty:ClaimAssessment ;
    rdfs:range wty:Coverage ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:checksExclusions a owl:ObjectProperty ;
    rdfs:label "checks exclusions"@en, "vérifie les exclusions"@fr ;
    rdfs:comment "Links a claim assessment to exclusions being checked."@en ;
    rdfs:domain wty:ClaimAssessment ;
    rdfs:range wty:Exclusion ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:determinesPayment a owl:ObjectProperty ;
    rdfs:label "determines payment"@en, "détermine le paiement"@fr ;
    rdfs:comment "Links a claim assessment to the payment rule used to determine payment responsibility."@en ;
    rdfs:domain wty:ClaimAssessment ;
    rdfs:range wty:PaymentRule ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:generatesInvoice a owl:ObjectProperty ;
    rdfs:label "generates invoice"@en, "génère la facture"@fr ;
    rdfs:comment "Links a claim assessment to the invoice generated."@en ;
    rdfs:domain wty:ClaimAssessment ;
    rdfs:range wty:Invoice ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:invoices a owl:ObjectProperty ;
    rdfs:label "invoices"@en, "facture"@fr ;
    rdfs:comment "Links an invoice to the intervention, repair, or service being invoiced."@en ;
    rdfs:domain wty:Invoice ;
    rdfs:range dpp:Intervention, dpp:WorkOrder, rma:Resolution ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

# Payment Rule Relations
wty:paysFor a owl:ObjectProperty ;
    rdfs:label "pays for"@en, "paie pour"@fr ;
    rdfs:comment "Links a payment rule to what it pays for (diagnostic, repair, parts, travel, etc.)."@en ;
    rdfs:domain wty:PaymentRule ;
    rdfs:range dpp:Intervention, dpp:Diagnostic, dpp:ReplacementPart, schema:Service ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:firstParty a owl:ObjectProperty ;
    rdfs:label "first party"@en, "première partie"@fr ;
    rdfs:comment "The party (organization or person) that pays first or primarily."@en ;
    rdfs:domain wty:PaymentRule ;
    rdfs:range schema:Organization, schema:Person ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:payer a owl:ObjectProperty ;
    rdfs:label "payer"@en, "payeur"@fr ;
    rdfs:comment "The party responsible for paying the invoice."@en ;
    rdfs:domain wty:Invoice ;
    rdfs:range schema:Organization, schema:Person ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

# Coverage Relations
wty:coversComponent a owl:ObjectProperty ;
    rdfs:label "covers component"@en, "couvre le composant"@fr ;
    rdfs:comment "Links coverage to specific product components that are covered."@en ;
    rdfs:domain wty:Coverage ;
    rdfs:range schema:Product, dpp:ProductPassport ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:coversDefectType a owl:ObjectProperty ;
    rdfs:label "covers defect type"@en, "couvre le type de défaut"@fr ;
    rdfs:comment "Links coverage to types of defects that are covered."@en ;
    rdfs:domain wty:Coverage ;
    rdfs:range schema:Thing ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:coversRepairType a owl:ObjectProperty ;
    rdfs:label "covers repair type"@en, "couvre le type de réparation"@fr ;
    rdfs:comment "Links coverage to types of repairs that are covered."@en ;
    rdfs:domain wty:Coverage ;
    rdfs:range dpp:Intervention, schema:Service ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:excludedDefectType a owl:ObjectProperty ;
    rdfs:label "excluded defect type"@en, "type de défaut exclu"@fr ;
    rdfs:comment "Links exclusion to types of defects that are excluded."@en ;
    rdfs:domain wty:Exclusion ;
    rdfs:range schema:Thing ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:excludedCause a owl:ObjectProperty ;
    rdfs:label "excluded cause"@en, "cause exclue"@fr ;
    rdfs:comment "Links exclusion to causes that are excluded (normal wear, damage, misuse, etc.)."@en ;
    rdfs:domain wty:Exclusion ;
    rdfs:range schema:Thing ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:excludedComponent a owl:ObjectProperty ;
    rdfs:label "excluded component"@en, "composant exclu"@fr ;
    rdfs:comment "Links exclusion to specific components that are excluded."@en ;
    rdfs:domain wty:Exclusion ;
    rdfs:range schema:Product ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

# Assessment Results
wty:appliedCoverage a owl:ObjectProperty ;
    rdfs:label "applied coverage"@en, "couverture appliquée"@fr ;
    rdfs:comment "Links a claim assessment to the coverage that applies."@en ;
    rdfs:domain wty:ClaimAssessment ;
    rdfs:range wty:Coverage ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:appliedExclusions a owl:ObjectProperty ;
    rdfs:label "applied exclusions"@en, "exclusions appliquées"@fr ;
    rdfs:comment "Links a claim assessment to exclusions that apply."@en ;
    rdfs:domain wty:ClaimAssessment ;
    rdfs:range wty:Exclusion ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:paymentDecision a owl:ObjectProperty ;
    rdfs:label "payment decision"@en, "décision de paiement"@fr ;
    rdfs:comment "Links a claim assessment to the payment rule that determines who pays."@en ;
    rdfs:domain wty:ClaimAssessment ;
    rdfs:range wty:PaymentRule ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

# ============================================================================
# DATATYPE PROPERTIES
# ============================================================================

# Coverage Properties
wty:coveragePeriod a owl:DatatypeProperty ;
    rdfs:label "coverage period"@en, "période de couverture"@fr ;
    rdfs:comment "The period during which coverage applies (e.g., '24_months', 'lifetime')."@en ;
    rdfs:domain wty:Coverage ;
    rdfs:range xsd:string ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:coverageStartDate a owl:DatatypeProperty ;
    rdfs:label "coverage start date"@en, "date de début de couverture"@fr ;
    rdfs:comment "Start date of coverage period."@en ;
    rdfs:domain wty:Coverage ;
    rdfs:range xsd:date ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:coverageEndDate a owl:DatatypeProperty ;
    rdfs:label "coverage end date"@en, "date de fin de couverture"@fr ;
    rdfs:comment "End date of coverage period."@en ;
    rdfs:domain wty:Coverage ;
    rdfs:range xsd:date ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

# Payment Rule Properties
wty:paymentPercentage a owl:DatatypeProperty ;
    rdfs:label "payment percentage"@en, "pourcentage de paiement"@fr ;
    rdfs:comment "Percentage of cost paid by the first party (0-100)."@en ;
    rdfs:domain wty:PaymentRule ;
    rdfs:range xsd:decimal ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:paymentSplit a owl:DatatypeProperty ;
    rdfs:label "payment split"@en, "répartition du paiement"@fr ;
    rdfs:comment "JSON string describing payment split between multiple parties."@en ;
    rdfs:domain wty:PaymentRule ;
    rdfs:range xsd:string ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:hasPaymentLimit a owl:DatatypeProperty ;
    rdfs:label "has payment limit"@en, "a une limite de paiement"@fr ;
    rdfs:comment "Whether the payment rule has a limit."@en ;
    rdfs:domain wty:PaymentRule ;
    rdfs:range xsd:boolean ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

# Condition Properties
wty:conditionType a owl:DatatypeProperty ;
    rdfs:label "condition type"@en, "type de condition"@fr ;
    rdfs:comment "Type of condition (normal_use, proper_installation, documentation, proof_of_purchase, etc.)."@en ;
    rdfs:domain wty:Condition ;
    rdfs:range xsd:string ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:conditionDescription a owl:DatatypeProperty ;
    rdfs:label "condition description"@en, "description de condition"@fr ;
    rdfs:comment "Description of the condition that must be met."@en ;
    rdfs:domain wty:Condition ;
    rdfs:range xsd:string ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:requiresDocumentation a owl:DatatypeProperty ;
    rdfs:label "requires documentation"@en, "nécessite une documentation"@fr ;
    rdfs:comment "Whether documentation is required (proof of purchase, installation certificate, etc.)."@en ;
    rdfs:domain wty:Condition ;
    rdfs:range xsd:boolean ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:requiresProof a owl:DatatypeProperty ;
    rdfs:label "requires proof"@en, "nécessite une preuve"@fr ;
    rdfs:comment "Whether proof is required (photos, diagnostic report, etc.)."@en ;
    rdfs:domain wty:Condition ;
    rdfs:range xsd:boolean ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:validityPeriod a owl:DatatypeProperty ;
    rdfs:label "validity period"@en, "période de validité"@fr ;
    rdfs:comment "Period during which the condition is valid (e.g., 'warranty_period', 'lifetime')."@en ;
    rdfs:domain wty:Condition ;
    rdfs:range xsd:string ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

# Limit Properties
wty:limitType a owl:DatatypeProperty ;
    rdfs:label "limit type"@en, "type de limite"@fr ;
    rdfs:comment "Type of limit (amount, number_of_interventions, per_incident, total, etc.)."@en ;
    rdfs:domain wty:Limit ;
    rdfs:range xsd:string ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:limitAmount a owl:DatatypeProperty ;
    rdfs:label "limit amount"@en, "montant limite"@fr ;
    rdfs:comment "Maximum amount for the limit."@en ;
    rdfs:domain wty:Limit ;
    rdfs:range xsd:decimal ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:limitCurrency a owl:DatatypeProperty ;
    rdfs:label "limit currency"@en, "devise limite"@fr ;
    rdfs:comment "Currency code for the limit amount (ISO 4217)."@en ;
    rdfs:domain wty:Limit ;
    rdfs:range xsd:string ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:limitQuantity a owl:DatatypeProperty ;
    rdfs:label "limit quantity"@en, "quantité limite"@fr ;
    rdfs:comment "Maximum quantity (for number-based limits like interventions)."@en ;
    rdfs:domain wty:Limit ;
    rdfs:range xsd:integer ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:limitPeriod a owl:DatatypeProperty ;
    rdfs:label "limit period"@en, "période limite"@fr ;
    rdfs:comment "Period over which the limit applies (per_month, per_year, total, etc.)."@en ;
    rdfs:domain wty:Limit ;
    rdfs:range xsd:string ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

# Contract Properties
wty:contractType a owl:DatatypeProperty ;
    rdfs:label "contract type"@en, "type de contrat"@fr ;
    rdfs:comment "Type of contract (maintenance, extension, insurance, service_agreement)."@en ;
    rdfs:domain wty:Contract ;
    rdfs:range xsd:string ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:contractNumber a owl:DatatypeProperty ;
    rdfs:label "contract number"@en, "numéro de contrat"@fr ;
    rdfs:comment "Unique identifier for the contract."@en ;
    rdfs:domain wty:Contract ;
    rdfs:range xsd:string ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:contractStartDate a owl:DatatypeProperty ;
    rdfs:label "contract start date"@en, "date de début de contrat"@fr ;
    rdfs:comment "Start date of the contract."@en ;
    rdfs:domain wty:Contract ;
    rdfs:range xsd:date ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:contractEndDate a owl:DatatypeProperty ;
    rdfs:label "contract end date"@en, "date de fin de contrat"@fr ;
    rdfs:comment "End date of the contract."@en ;
    rdfs:domain wty:Contract ;
    rdfs:range xsd:date ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:contractStatus a owl:DatatypeProperty ;
    rdfs:label "contract status"@en, "statut du contrat"@fr ;
    rdfs:comment "Status of the contract (active, expired, suspended, cancelled, renewed)."@en ;
    rdfs:domain wty:Contract ;
    rdfs:range xsd:string ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:autoRenewal a owl:DatatypeProperty ;
    rdfs:label "auto renewal"@en, "renouvellement automatique"@fr ;
    rdfs:comment "Whether the contract auto-renews."@en ;
    rdfs:domain wty:Contract ;
    rdfs:range xsd:boolean ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

# Claim Assessment Properties
wty:assessmentDate a owl:DatatypeProperty ;
    rdfs:label "assessment date"@en, "date d'évaluation"@fr ;
    rdfs:comment "Date when the assessment was performed."@en ;
    rdfs:domain wty:ClaimAssessment ;
    rdfs:range xsd:dateTime ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:assessmentResult a owl:DatatypeProperty ;
    rdfs:label "assessment result"@en, "résultat d'évaluation"@fr ;
    rdfs:comment "Result of the assessment (covered, not_covered, partially_covered, pending_verification)."@en ;
    rdfs:domain wty:ClaimAssessment ;
    rdfs:range xsd:string ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:assessmentReason a owl:DatatypeProperty ;
    rdfs:label "assessment reason"@en, "raison d'évaluation"@fr ;
    rdfs:comment "Reason for the assessment result (explanation of why covered or not)."@en ;
    rdfs:domain wty:ClaimAssessment ;
    rdfs:range xsd:string ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:coveredAmount a owl:DatatypeProperty ;
    rdfs:label "covered amount"@en, "montant couvert"@fr ;
    rdfs:comment "Amount covered by warranty/contract for this claim."@en ;
    rdfs:domain wty:ClaimAssessment ;
    rdfs:range xsd:decimal ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:coveredCurrency a owl:DatatypeProperty ;
    rdfs:label "covered currency"@en, "devise couverte"@fr ;
    rdfs:comment "Currency code for the covered amount (ISO 4217)."@en ;
    rdfs:domain wty:ClaimAssessment ;
    rdfs:range xsd:string ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:customerResponsibility a owl:DatatypeProperty ;
    rdfs:label "customer responsibility"@en, "responsabilité client"@fr ;
    rdfs:comment "Amount the customer is responsible for."@en ;
    rdfs:domain wty:ClaimAssessment ;
    rdfs:range xsd:decimal ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

# Invoice Properties (extending schema:Invoice)
wty:invoiceNumber a owl:DatatypeProperty ;
    rdfs:label "invoice number"@en, "numéro de facture"@fr ;
    rdfs:comment "Unique identifier for the invoice."@en ;
    rdfs:domain wty:Invoice ;
    rdfs:range xsd:string ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:invoiceAmount a owl:DatatypeProperty ;
    rdfs:label "invoice amount"@en, "montant de facture"@fr ;
    rdfs:comment "Total amount of the invoice."@en ;
    rdfs:domain wty:Invoice ;
    rdfs:range xsd:decimal ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:invoiceCurrency a owl:DatatypeProperty ;
    rdfs:label "invoice currency"@en, "devise de facture"@fr ;
    rdfs:comment "Currency code for the invoice amount (ISO 4217)."@en ;
    rdfs:domain wty:Invoice ;
    rdfs:range xsd:string ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:invoiceDate a owl:DatatypeProperty ;
    rdfs:label "invoice date"@en, "date de facture"@fr ;
    rdfs:comment "Date when the invoice was generated."@en ;
    rdfs:domain wty:Invoice ;
    rdfs:range xsd:dateTime ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:invoiceStatus a owl:DatatypeProperty ;
    rdfs:label "invoice status"@en, "statut de facture"@fr ;
    rdfs:comment "Status of the invoice (draft, sent, paid, overdue, cancelled)."@en ;
    rdfs:domain wty:Invoice ;
    rdfs:range xsd:string ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

wty:invoicePaymentSplit a owl:DatatypeProperty ;
    rdfs:label "invoice payment split"@en, "répartition de paiement sur facture"@fr ;
    rdfs:comment "JSON string describing how payment is split between parties on an invoice (if multiple payers)."@en ;
    rdfs:domain wty:Invoice ;
    rdfs:range xsd:string ;
    rdfs:isDefinedBy <https://ns.verisav.fr/wty#> ;
    vs:term_status "stable" .

