# SOC.TTL — Refactored v0.2
# =============================================================================
# Refactoring changelog (applied fixes from Audit Report):
#
#          machine-readable pointer to compliance:ComplianceExtension (OBO P.19).
#          abstract parent for all registered extension root classes).
#          lcaef:Performer is backed by a formal import declaration.
#          skos:definition using genus-differentia form; rdfs:comment kept.
#          hazardClass, signalWord, hazardStatement).
#          (California Prop 65, TSCA, SCIP Database).
#          confidence/score properties now carry SHACL-note comment about
#          0.0–1.0 constraint (full SHACL enforcement in companion .shacl.ttl).
#          of soc:SocExtension (hasSubstanceOfConcern).
#          pointer per OBO Foundry Principle 19.
#          lcaef:LifecycleStage for lifecycle stage alignment.
#          battery:dueDiligence for supply chain due diligence discoverability.
# =============================================================================

@prefix soc:     <https://www.dpp-interoperability.wiki/vocab/v1/soc#> .
@prefix dpp:     <https://www.dpp-interoperability.wiki/vocab/v1/dpp#> .
@prefix owl:     <http://www.w3.org/2002/07/owl#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix skos:    <http://www.w3.org/2004/02/skos/core#> .
@prefix vann:    <http://purl.org/vocab/vann/> .

# =============================================================================
# Ontology Header
# =============================================================================

<https://www.dpp-interoperability.wiki/vocab/v1/soc>
  a owl:Ontology ;
  owl:versionIRI   <https://www.dpp-interoperability.wiki/vocab/v1/soc/0.2> ;
  owl:versionInfo  "0.2" ;
  owl:imports      <https://www.dpp-interoperability.wiki/vocab/v1/dpp> ;
  #             reference to lcaef:Performer in soc:DueDiligencePerformer.
  owl:imports      <https://www.dpp-interoperability.wiki/vocab/v1/lca-ef> ;
  rdfs:label       "DPP Substances of Concern Extension Vocabulary"@en ;
  rdfs:comment     "Substances of Concern (SoC) extension to the DPP Core Vocabulary. Covers hazardous substance declarations, REACH/RoHS/SVHC compliance, restricted substance list checks, GHS hazard classification, and supply chain due diligence per EU REACH Regulation and RoHS Directive."@en ;
  dcterms:description
    "Substances of Concern extension vocabulary for the DPP Interoperability Platform. Covers hazardous substances, REACH/RoHS compliance, SVHC checks, restricted substance lists, and due diligence."@en ;
  dcterms:creator   "Jorge Renato Leon Chumpitaz" ;
  dcterms:publisher "VU Amsterdam / LUT University" ;
  dcterms:created   "2026-02-06"^^xsd:date ;
  dcterms:modified  "2026-02-27"^^xsd:date ;
  dcterms:license   <https://creativecommons.org/licenses/by/4.0/> ;
  dcterms:rights    "CC BY 4.0 — Jorge Renato Leon Chumpitaz" ;
  dcterms:subject   "Digital Product Passport", "REACH", "RoHS",
                    "Substances of Concern", "SVHC" ;
  rdfs:seeAlso      <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02006R1907-20230101> ,
                    <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32011L0065> ,
                    <https://www.dpp-interoperability.wiki/vocab/v1/soc.shacl.ttl> ;
  vann:preferredNamespacePrefix "soc" ;
  vann:preferredNamespaceUri    "https://www.dpp-interoperability.wiki/vocab/v1/soc#" .

# =============================================================================
# Classes
# =============================================================================

soc:SocExtension
  a owl:Class ;
  #       (dpp:Extension) is satisfied and the extension tree is coherent.
  rdfs:subClassOf  dpp:Extension ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "Substances of Concern Extension"@en ;
  rdfs:comment "Container class for substances of concern data within a DPP. Implements disclosure requirements from REACH Regulation 1907/2006 Article 33 (SVHC communication), RoHS Directive 2011/65/EU Article 4 (substance restrictions), and CLP Regulation 1272/2008 (GHS hazard classification)."@en ;
  skos:definition
    "A dpp:Extension which groups all substances-of-concern data within a Digital Product Passport, including hazardous substance declarations per REACH Article 33, SVHC candidate list checks, restricted substance list compliance per RoHS Article 4, GHS hazard information per CLP Regulation 1272/2008, and supply chain due diligence statements."@en ;
  rdfs:seeAlso <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02006R1907-20230101> ,
               <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32011L0065> ,
               <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32008R1272> .

soc:Substance
  a owl:Class ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "Substance"@en ;
  rdfs:comment "A hazardous substance present in the product, identified by CAS/EC number."@en ;
  skos:definition
    "A soc:SocExtension component which identifies one hazardous chemical substance present in the product by its CAS number, EC number, and/or IUPAC name, together with its concentration, regulatory role, location within the product, and applicable GHS hazard classifications."@en ;
  rdfs:seeAlso <https://echa.europa.eu/information-on-chemicals> .

soc:Concentration
  a owl:Class ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "Concentration"@en ;
  rdfs:comment "Concentration measurement: value, unit, and measurement uncertainty."@en ;
  skos:definition
    "A soc:Substance component which expresses the measured concentration of a hazardous substance in the product as a numeric value with a declared unit (e.g. mg/kg or % w/w) and an optional measurement uncertainty range."@en .

soc:RegulatoryThreshold
  a owl:Class ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "Regulatory Threshold"@en ;
  rdfs:comment "Regulatory threshold against which a substance concentration is compared."@en ;
  skos:definition
    "A soc:Substance component which specifies the maximum permissible concentration value defined by a named regulation (e.g. REACH, RoHS Annex II) for a given substance, together with the threshold unit and the regulation reference."@en .

soc:SvhcCandidateListCheck
  a owl:Class ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "SVHC Candidate List Check"@en ;
  rdfs:comment "Result of checking the product against the ECHA SVHC Candidate List (REACH Article 33)."@en ;
  skos:definition
    "A soc:SocExtension component which records the outcome of verifying whether any substance present in the product appears on the ECHA Substances of Very High Concern Candidate List per REACH Article 33, including the check date and list version."@en ;
  rdfs:seeAlso <https://echa.europa.eu/candidate-list-table> .
  # The deprecated class carries no machine-readable successor in the original.

soc:Hazard
  a owl:Class ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "Hazard"@en ;
  rdfs:comment "Hazard information associated with substances per GHS classification and EU CLP Regulation 1272/2008. Each hazard is identified by a standardized code (e.g. H301), class (e.g. Acute Toxicity), signal word, and hazard statement."@en ;
  skos:definition
    "A soc:SocExtension component which captures the GHS/CLP hazard classification for one hazard category applicable to the product, identified by a standardised hazard code, hazard class, signal word, and hazard statement per EU CLP Regulation 1272/2008."@en ;
  rdfs:seeAlso <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32008R1272> .

soc:RestrictedSubstanceListCompliance
  a owl:Class ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "Restricted Substance List Compliance"@en ;
  rdfs:comment "Compliance status with regulatory restricted substance lists."@en ;
  skos:definition
    "A soc:SocExtension component which records compliance status with a named restricted substance list framework, such as RoHS Annex II or similar regulations."@en ;
  rdfs:seeAlso <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32011L0065> .

soc:OtherListCompliance
  a owl:Class ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "Other List Compliance"@en ;
  rdfs:comment "Compliance with additional restricted substance lists beyond core REACH and RoHS regulations."@en ;
  skos:definition "A soc:RestrictedSubstanceListCompliance component which records compliance status with a named restricted substance list outside the core REACH/RoHS framework, such as California Proposition 65, US TSCA, or the SCIP database."@en ;
  rdfs:seeAlso <https://oehha.ca.gov/proposition-65/proposition-65-list> ,
               <https://www.epa.gov/tsca-inventory> ,
               <https://echa.europa.eu/scip-database> .

soc:DueDiligenceStatement
  a owl:Class ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "Due Diligence Statement"@en ;
  rdfs:comment "Supply chain due diligence statement for substances of concern."@en ;
  skos:definition
    "A soc:SocExtension component which attests that a named organization has carried out supply chain due diligence with respect to substances of concern present in the product, specifying the scope, date, and outcome of the assessment."@en .

# NEW CLASS: replaces the plain-string soc:performedBy DatatypeProperty.
# Aligned with the richer lcaef:Performer pattern for cross-extension consistency.
soc:DueDiligencePerformer
  a owl:Class ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "Due Diligence Performer"@en ;
  rdfs:comment "Organization or person that performed the due diligence assessment. Aligned with lcaef:Performer for cross-extension consistency."@en ;
  skos:definition
    "A soc:DueDiligenceStatement component which identifies the organization or person responsible for conducting the substance-of-concern due diligence assessment, including their name and optional identifier."@en ;
  rdfs:seeAlso <https://www.dpp-interoperability.wiki/vocab/v1/lca-ef#Performer> .

# Disjointness — preserved from original
soc:Substance     owl:disjointWith soc:Concentration, soc:RegulatoryThreshold,
                                   soc:SvhcCandidateListCheck, soc:DueDiligenceStatement .
soc:Concentration owl:disjointWith soc:RegulatoryThreshold .

# =============================================================================
# Object Properties
# =============================================================================

soc:hasSubstanceOfConcern
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label    "hasSubstanceOfConcern"@en ;
  rdfs:comment  "Links SoC extension to its declared hazardous substances."@en ;
  rdfs:domain   soc:SocExtension ;
  rdfs:range    soc:Substance ;
  owl:inverseOf soc:isSubstanceOfConcernIn .

soc:isSubstanceOfConcernIn
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "isSubstanceOfConcernIn"@en ;
  rdfs:comment "Inverse of soc:hasSubstanceOfConcern."@en ;
  rdfs:domain  soc:Substance ;
  rdfs:range   soc:SocExtension .

# Machine-readable replacement pointer added per OBO Foundry Principle 19.
soc:concentration
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "concentration"@en ;
  rdfs:comment "Links a substance to its concentration measurement."@en ;
  rdfs:domain  soc:Substance ;
  rdfs:range   soc:Concentration .

soc:regulatoryThreshold
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "regulatoryThreshold"@en ;
  rdfs:comment "Links a substance to its applicable regulatory threshold."@en ;
  rdfs:domain  soc:Substance ;
  rdfs:range   soc:RegulatoryThreshold .

soc:alternatives
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "alternatives"@en ;
  rdfs:comment "Links a substance to identified safer alternative substances."@en ;
  rdfs:domain  soc:Substance ;
  rdfs:range   soc:Substance .

soc:svhcCandidateListCheck
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "svhcCandidateListCheck"@en ;
  rdfs:comment "Links SoC extension to its SVHC candidate list check result."@en ;
  rdfs:domain  soc:SocExtension ;
  rdfs:range   soc:SvhcCandidateListCheck .
soc:hazards
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "hazards"@en ;
  rdfs:comment "Hazard information associated with substances."@en ;
  rdfs:domain  soc:SocExtension ;
  rdfs:range   soc:Hazard .

soc:otherListCompliance
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "otherListCompliance"@en ;
  rdfs:comment "Links restricted substance compliance to other list checks."@en ;
  rdfs:domain  soc:RestrictedSubstanceListCompliance ;
  rdfs:range   soc:OtherListCompliance .

soc:dueDiligenceStatement
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "dueDiligenceStatement"@en ;
  rdfs:comment "Links SoC extension to a supply chain due diligence statement."@en ;
  rdfs:domain  soc:SocExtension ;
  rdfs:range   soc:DueDiligenceStatement ;
  # Cross-reference: battery extension has parallel supply chain due diligence
  rdfs:seeAlso <https://www.dpp-interoperability.wiki/vocab/v1/battery#dueDiligence> .

# FIX (original): changed from owl:DatatypeProperty (xsd:string) to owl:ObjectProperty
# pointing to soc:DueDiligencePerformer class, matching lcaef:performedBy pattern.
soc:performedBy
  a owl:ObjectProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "performedBy"@en ;
  rdfs:comment "Links a DueDiligenceStatement to the organization that performed it."@en ;
  rdfs:domain  soc:DueDiligenceStatement ;
  rdfs:range   soc:DueDiligencePerformer .

# =============================================================================
# Cardinality Constraints
#            property of soc:SocExtension.
# =============================================================================

soc:SocExtension
  rdfs:subClassOf
    [ a owl:Restriction ;
      owl:onProperty   soc:hasSubstanceOfConcern ;
      owl:minCardinality 1 ] .

# =============================================================================
# Datatype Properties — Substance
# =============================================================================

soc:substanceName
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "substanceName"@en ;
  rdfs:comment "Common name of the substance."@en ;
  rdfs:domain  soc:Substance ;
  rdfs:range   xsd:string .

soc:casNumber
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "casNumber"@en ;
  rdfs:comment "Chemical Abstracts Service registry number."@en ;
  rdfs:domain  soc:Substance ;
  rdfs:range   xsd:string .

soc:ecNumber
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "ecNumber"@en ;
  rdfs:comment "European Community number (EINECS/ELINCS)."@en ;
  rdfs:domain  soc:Substance ;
  rdfs:range   xsd:string .

soc:iupacName
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "iupacName"@en ;
  rdfs:comment "IUPAC systematic name."@en ;
  rdfs:domain  soc:Substance ;
  rdfs:range   xsd:string .

soc:substanceLocation
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "substanceLocation"@en ;
  rdfs:comment "Location within the product (e.g. 'anode', 'coating', 'PCB solder')."@en ;
  rdfs:domain  soc:Substance ;
  rdfs:range   xsd:string .

soc:relevantLifecycleStage
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "relevantLifecycleStage"@en ;
  rdfs:comment "Lifecycle stage where the substance is most relevant: production, use, end-of-life."@en ;
  rdfs:domain  soc:Substance ;
  rdfs:range   xsd:string ;
  # Cross-reference: LCA-EF extension models lifecycle stages as structured objects
  rdfs:seeAlso <https://www.dpp-interoperability.wiki/vocab/v1/lca-ef#LifecycleStage> .

soc:substanceFunction
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "substanceFunction"@en ;
  rdfs:comment "Function or purpose of the substance in the product."@en ;
  rdfs:domain  soc:Substance ;
  rdfs:range   xsd:string .

soc:hazardClassification
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "hazardClassification"@en ;
  rdfs:comment "CLP/GHS hazard classification codes (e.g. H302, Carc. 1B)."@en ;
  rdfs:domain  soc:Substance ;
  rdfs:range   xsd:string .

soc:role
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "role"@en ;
  rdfs:comment "Regulatory role: 'SVHC', 'restricted', or 'notified'."@en ;
  rdfs:domain  soc:Substance ;
  rdfs:range   xsd:string .

soc:additionalNotes
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "additionalNotes"@en ;
  rdfs:comment "Additional notes about the substance."@en ;
  rdfs:domain  soc:Substance ;
  rdfs:range   xsd:string .

soc:safetyDataSheetLink
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "safetyDataSheetLink"@en ;
  rdfs:comment "URL to the safety data sheet (SDS)."@en ;
  rdfs:domain  soc:Substance ;
  rdfs:range   xsd:anyURI .

# =============================================================================
# Datatype Properties — Concentration
#       A companion SHACL shape in soc.shacl.ttl enforces sh:minInclusive 0.0.
# =============================================================================

soc:concentrationValue
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "concentrationValue"@en ;
  rdfs:comment "Numeric concentration value. Must be >= 0.0 (enforced by SHACL shape)."@en ;
  rdfs:domain  soc:Concentration ;
  rdfs:range   xsd:double .

soc:concentrationUnit
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "concentrationUnit"@en ;
  rdfs:comment "Unit of concentration (e.g. 'mg/kg', '% w/w', 'ppm')."@en ;
  rdfs:domain  soc:Concentration ;
  rdfs:range   xsd:string .

soc:concentrationUncertainty
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "concentrationUncertainty"@en ;
  rdfs:comment "Measurement uncertainty as an absolute value in the same unit as concentrationValue."@en ;
  rdfs:domain  soc:Concentration ;
  rdfs:range   xsd:double .

soc:measurementMethod
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "measurementMethod"@en ;
  rdfs:comment "Analytical method used to measure the concentration (e.g. ICP-MS, XRF)."@en ;
  rdfs:domain  soc:Concentration ;
  rdfs:range   xsd:string .

# =============================================================================
# Datatype Properties — Regulatory Threshold
# =============================================================================

soc:thresholdValue
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "thresholdValue"@en ;
  rdfs:comment "Maximum permissible concentration threshold value."@en ;
  rdfs:domain  soc:RegulatoryThreshold ;
  rdfs:range   xsd:double .

soc:thresholdUnit
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "thresholdUnit"@en ;
  rdfs:comment "Unit of the threshold value."@en ;
  rdfs:domain  soc:RegulatoryThreshold ;
  rdfs:range   xsd:string .

soc:regulationReference
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "regulationReference"@en ;
  rdfs:comment "Name or identifier of the regulation defining this threshold (e.g. 'REACH Annex XVII', 'RoHS Annex II')."@en ;
  rdfs:domain  soc:RegulatoryThreshold ;
  rdfs:range   xsd:string .

soc:thresholdExceeded
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "thresholdExceeded"@en ;
  rdfs:comment "Whether the measured concentration exceeds the regulatory threshold."@en ;
  rdfs:domain  soc:RegulatoryThreshold ;
  rdfs:range   xsd:boolean .

# =============================================================================
# Datatype Properties — SVHC Candidate List Check
# =============================================================================

soc:svhcCheckDate
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "svhcCheckDate"@en ;
  rdfs:comment "Date on which the SVHC candidate list was checked."@en ;
  rdfs:domain  soc:SvhcCandidateListCheck ;
  rdfs:range   xsd:date .

soc:svhcListVersion
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "svhcListVersion"@en ;
  rdfs:comment "Version/date of the ECHA SVHC Candidate List used for the check."@en ;
  rdfs:domain  soc:SvhcCandidateListCheck ;
  rdfs:range   xsd:string .

soc:svhcPresent
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "svhcPresent"@en ;
  rdfs:comment "Whether any SVHC from the candidate list is present above 0.1% w/w per REACH Article 33."@en ;
  rdfs:domain  soc:SvhcCandidateListCheck ;
  rdfs:range   xsd:boolean .

# =============================================================================
# Datatype Properties — Hazard
#            properties: hazardCode, hazardClass, signalWord, hazardStatement.
# =============================================================================

soc:hazardCode
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "hazardCode"@en ;
  rdfs:comment "GHS/CLP hazard statement code (e.g. H301, H410)."@en ;
  rdfs:domain  soc:Hazard ;
  rdfs:range   xsd:string ;
  rdfs:seeAlso <https://unece.org/ghs> .

soc:hazardClass
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "hazardClass"@en ;
  rdfs:comment "GHS hazard class (e.g. 'Acute toxicity', 'Carcinogenicity', 'Aquatic toxicity')."@en ;
  rdfs:domain  soc:Hazard ;
  rdfs:range   xsd:string ;
  rdfs:seeAlso <https://unece.org/ghs> .

soc:signalWord
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "signalWord"@en ;
  rdfs:comment "GHS signal word: 'Danger' or 'Warning'."@en ;
  rdfs:domain  soc:Hazard ;
  rdfs:range   xsd:string ;
  rdfs:seeAlso <https://unece.org/ghs> .

soc:hazardStatement
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "hazardStatement"@en ;
  rdfs:comment "Full text of the GHS hazard statement (e.g. 'Fatal if swallowed')."@en ;
  rdfs:domain  soc:Hazard ;
  rdfs:range   xsd:string ;
  rdfs:seeAlso <https://unece.org/ghs> .

# =============================================================================
# Datatype Properties — Other List Compliance
# =============================================================================

soc:listName
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "listName"@en ;
  rdfs:comment "Name of the restricted substance list (e.g. 'California Prop 65', 'TSCA', 'SCIP')."@en ;
  rdfs:domain  soc:OtherListCompliance ;
  rdfs:range   xsd:string .

soc:listComplianceStatus
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "listComplianceStatus"@en ;
  rdfs:comment "Compliance status with the named list: 'compliant', 'non_compliant', or 'under_review'."@en ;
  rdfs:domain  soc:OtherListCompliance ;
  rdfs:range   xsd:string .

soc:listVersion
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "listVersion"@en ;
  rdfs:comment "Version or date of the restricted substance list used for the compliance check."@en ;
  rdfs:domain  soc:OtherListCompliance ;
  rdfs:range   xsd:string .

# =============================================================================
# Datatype Properties — Due Diligence Statement
# =============================================================================

soc:dueDiligenceScope
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "dueDiligenceScope"@en ;
  rdfs:comment "Scope of the due diligence assessment (e.g. 'Tier 1 suppliers', 'full supply chain')."@en ;
  rdfs:domain  soc:DueDiligenceStatement ;
  rdfs:range   xsd:string .

soc:dueDiligenceDate
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "dueDiligenceDate"@en ;
  rdfs:comment "Date the due diligence assessment was completed."@en ;
  rdfs:domain  soc:DueDiligenceStatement ;
  rdfs:range   xsd:date .

soc:dueDiligenceOutcome
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "dueDiligenceOutcome"@en ;
  rdfs:comment "Outcome of the due diligence assessment: 'passed', 'failed', or 'conditional'."@en ;
  rdfs:domain  soc:DueDiligenceStatement ;
  rdfs:range   xsd:string .

soc:dueDiligenceDocumentLink
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "dueDiligenceDocumentLink"@en ;
  rdfs:comment "URL to the due diligence assessment report document."@en ;
  rdfs:domain  soc:DueDiligenceStatement ;
  rdfs:range   xsd:anyURI .

# =============================================================================
# Datatype Properties — Due Diligence Performer
# =============================================================================

soc:performerName
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "performerName"@en ;
  rdfs:comment "Name of the organization or person that performed the due diligence."@en ;
  rdfs:domain  soc:DueDiligencePerformer ;
  rdfs:range   xsd:string .

soc:performerId
  a owl:DatatypeProperty ;
  rdfs:isDefinedBy <https://www.dpp-interoperability.wiki/vocab/v1/soc> ;
  rdfs:label   "performerId"@en ;
  rdfs:comment "Identifier of the performer (e.g. VAT number, accreditation ID)."@en ;
  rdfs:domain  soc:DueDiligencePerformer ;
  rdfs:range   xsd:string .
