@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 skos: <http://www.w3.org/2004/02/skos/core#> .

@prefix gx:   <https://w3id.org/gaia-x/development#> .
@prefix sdcj: <https://circularsolution.services/gxdch/sdcj/rdf/ontology#> .
@prefix schema: <https://schema.org/> .

<https://circularsolution.services/gxdch/sdcj/rdf/ontology>
    a owl:Ontology ;
    rdfs:label "SDCJ Ontology" ;
    skos:definition "Selective-Disclosure Cross-Jurisdiction extension for Gaia-X: defines participants, jurisdiction-specific business registration qualifiers, and selectively-disclosable compliance credentials." ;
    owl:versionInfo "0.1.0" ;
    owl:imports <https://w3id.org/gaia-x/core> .


#################################################################
# Participant

sdcj:Participant
    a owl:Class ;
    rdfs:subClassOf gx:Participant ;
    rdfs:label "SDCJ Participant" ;
    skos:definition "A Gaia-X Participant verified against one or more jurisdiction-specific business registries." .

schema:name
    a owl:DatatypeProperty ;
    rdfs:domain sdcj:Participant ;
    rdfs:range xsd:string ;
    rdfs:label "Name" ;
    skos:definition "Legal or brand name of the SDCJ Participant." .

#################################################################
# Company Registration

gx:CompanyRegistration
    a owl:Class ;
    rdfs:label "Company Registration" ;
    skos:definition "Official registration data of a legal entity." .

gx:registrationNumber
    a owl:ObjectProperty ;
    rdfs:label "registration number" ;
    rdfs:domain sdcj:Participant ;
    rdfs:range gx:CompanyRegistration ;
    skos:definition "Country's registration number details, identifying one specific entity." .

gx:countryCompanyNumber
    a owl:DatatypeProperty ;
    rdfs:label "Country Company Number" ;
    rdfs:domain gx:CompanyRegistration ;
    rdfs:range xsd:string ;
    skos:definition "Unique registration number assigned by an official registry." .

gx:companyNumberQualifier
    a owl:DatatypeProperty ;
    rdfs:label "Company Number Qualifier" ;
    rdfs:domain gx:CompanyRegistration ;
    rdfs:range xsd:string ;
    skos:definition "Defines the namespace or qualifier of the registration number (one of the sdcj:*RegistrationNumber individuals)." .

gx:countryCode
    a owl:DatatypeProperty ;
    rdfs:label "Country Code" ;
    rdfs:domain gx:CompanyRegistration ;
    rdfs:range xsd:string ;
    skos:definition "Country where the organisation is registered (ISO-3166-1 Alpha-2)." .

#################################################################
# Jurisdiction Qualifiers

sdcj:JPCompanyNumber
    a owl:NamedIndividual ;
    rdfs:label "Japan Corporate Number" ;
    skos:definition "13-digit corporate number issued by Japan's National Tax Agency (NTA)." .

sdcj:KRBusinessRegistrationNumber
    a owl:NamedIndividual ;
    rdfs:label "Korea Business Registration Number" ;
    skos:definition "10-digit business registration number (사업자등록번호) issued by Korea's National Tax Service (NTS)." .

#################################################################
# Control Proof Inputs

sdcj:establishmentDate
    a owl:DatatypeProperty ;
    rdfs:domain sdcj:Participant ;
    rdfs:range xsd:string ;
    rdfs:label "Establishment Date" ;
    skos:definition "Business opening date as recorded by the issuing authority (YYYYMMDD). Verification input only." .

sdcj:representativeName
    a owl:DatatypeProperty ;
    rdfs:domain sdcj:Participant ;
    rdfs:range xsd:string ;
    rdfs:label "Representative Name" ;
    skos:definition "Legal representative on record with the issuing authority. Verification input only, never emitted in a compliance credential." .

sdcj:corporateNumber
  a owl:DatatypeProperty ;
  rdfs:domain sdcj:Participant ;
  rdfs:range xsd:string ;
  rdfs:label "Corporate Number" ;
  skos:definition "Nationally unique corporation number where the jurisdiction issues one. Disambiguates identically named businesses." .

#################################################################
# Compliance Credential

sdcj:ComplianceCredential
    a owl:Class ;
    rdfs:label "SDCJ Compliance Credential" ;
    skos:definition "Compliance credential issued by an SDCJ extension after a Verifiable Presentation passes signature, SHACL, and jurisdiction registry validation. Emitted as an SD-JWT-VC with selectively disclosable jurisdiction attestations." .

sdcj:jurisdictionAttestations
    a owl:ObjectProperty ;
    rdfs:label "Jurisdiction Attestations" ;
    rdfs:domain sdcj:ComplianceCredential ;
    rdfs:range sdcj:JurisdictionAttestation ;
    skos:definition "Per-registration-number attestations of authority verification. Selectively disclosable via SD-JWT." .

sdcj:JurisdictionAttestation
    a owl:Class ;
    rdfs:label "Jurisdiction Attestation" ;
    skos:definition "A single attestation that one registration number was verified with its issuing tax authority." .

sdcj:registrationNumber
    a owl:DatatypeProperty ;
    rdfs:domain sdcj:JurisdictionAttestation ;
    rdfs:range xsd:string ;
    rdfs:label "Verified Registration Number" .

sdcj:taxAuthority
    a owl:DatatypeProperty ;
    rdfs:domain sdcj:JurisdictionAttestation ;
    rdfs:range xsd:string ;
    rdfs:label "Tax Authority" ;
    skos:definition "Identifier of the tax authority that confirmed the registration number (e.g. KR-NTS, JP-NTA)." .

sdcj:verifiedAt
    a owl:DatatypeProperty ;
    rdfs:domain sdcj:JurisdictionAttestation ;
    rdfs:range xsd:dateTime ;
    rdfs:label "Verified At" ;
    skos:definition "ISO-8601 timestamp at which the registration number was confirmed against the authority." .

sdcj:identityConfirmed
    a owl:DatatypeProperty ;
    rdfs:domain sdcj:JurisdictionAttestation ;
    rdfs:range xsd:string ;
    rdfs:label "Identity Confirmed" ;
    skos:definition "The presenter proved control of this registration number via challenge-response with a national business certificate, confirmed against the issuing authority." .

sdcj:confirmedName
    a owl:DatatypeProperty ;
    rdfs:domain sdcj:JurisdictionAttestation ;
    rdfs:range xsd:string ;
    rdfs:label "Confirmed Business Name" ;
    skos:definition "Registered business name from the signer certificate that the authority confirmed against the registration number." .
