@base <https://purl.org/solid-vc/credentialStatus> .
@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 dc: <http://purl.org/dc/elements/1.1/> .
@prefix cred: <https://www.w3.org/2018/credentials#> .
@prefix svcs: <#> .


<> a owl:Ontology ;
    dc:title "Solid Verifiable Credential Status Ontology" ;
    dc:date "2022-07-26" ;
    dc:creator <https://uvdsl.solid.aifb.kit.edu/profile/card#me> ;
    dc:description "This is an RDF vocabulary to model the status of Solid-based Verifiable Credentials." .
    
    
####################
#      Classes     #
####################    


svcs:CredentialStatusInformation a rdfs:Class ;
    rdfs:isDefinedBy <> ;
    rdfs:label "Information on the status of a credential" ;
    rdfs:comment """
The class of a piece of information regarding the status of a credential. 
For the sake of usefullness, this information should include an svcs:currentStatus relation to indicate the acutal current status.
May include any additional information, including but not limited to reasons for or comments on the current status, former status and so on.
An individual of this class is the object of a relation with the VC-defined property `cred:credentialStatus`.
                 """ .

svcs:CredentialStatus a rdfs:Class ;
    rdfs:isDefinedBy <> ;
    rdfs:label "Status of a credential" ;
    rdfs:comment """
The class of actual status that a credential can have, e.g., "issued", "suspended" or "revoked".
                 """ .
                 
                 
####################
#    Properties    #
####################    


svcs:statusOf a rdf:Property ;
    rdfs:isDefinedBy <> ;
    rdfs:label "status of" ;
    rdfs:comment """
The property indicates the credential which the status information belong to.
                 """ ;
    rdfs:domain svcs:CredentialStatusInformation ;
    rdfs:range  cred:VerifiableCredential .

svcs:currentStatus a rdf:Property ;
    rdfs:isDefinedBy <> ;
    rdfs:label "has current status" ;
    rdfs:comment """
The property indicates the actual status of the credential, e.g., if it has been "issued", "suspended" or "revoked".
                 """ ;
    rdfs:domain svcs:CredentialStatusInformation ;
    rdfs:range  svcs:CredentialStatus .
    
svcs:statusReason a rdf:Property ;
    rdfs:isDefinedBy <> ;
    rdfs:label "has reason for the status" ;
    rdfs:comment """
A comment on or justification for the current status of a credential.
                 """ ;
    rdfs:domain svcs:CredentialStatusInformation ;
    rdfs:range  xsd:string .
    

                 
####################
#    Individuals   #
####################    
                 
                 
svcs:Issued a svcs:CredentialStatus ;
    rdfs:comment "The status of a credential when everything is ok.".

svcs:Suspended a svcs:CredentialStatus ;
    rdfs:comment "The status of a credential when it is tentatively put on hold, e.g., due to some investigations.".

svcs:Revoked a svcs:CredentialStatus ;
    rdfs:comment "The status of a credential when it is revoked.".
