@prefix specl: <https://w3id.org/specl/ns#> .
@prefix owl:  <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix dct:  <http://purl.org/dc/terms/> .
@prefix xsd:  <http://www.w3.org/2001/XMLSchema#> .

<https://w3id.org/specl/ns> a owl:Ontology ;
    dct:title "SPECL Core Ontology" ;
    owl:versionInfo "0.1.0" .

# --- Classes ---
specl:Specification   a owl:Class ; rdfs:label "Specification" .
specl:Requirement     a owl:Class ; rdfs:label "Requirement" .
specl:UserStory       a owl:Class ; rdfs:label "User Story" .
specl:DesignNote      a owl:Class ; rdfs:label "Design Note" .
specl:Comment         a owl:Class ; rdfs:label "Comment" .
specl:OpenIssue       a owl:Class ; rdfs:label "Open Issue" .
specl:DecisionRecord  a owl:Class ; rdfs:label "Decision Record (ADR)" .
specl:Component       a owl:Class ; rdfs:label "Component" .
specl:Test            a owl:Class ; rdfs:label "Verification Artifact" .

# --- Object properties ---
specl:partOf       a owl:ObjectProperty ; rdfs:domain specl:Requirement ; rdfs:range specl:Specification .
specl:verifiedBy   a owl:ObjectProperty ; rdfs:range specl:Test .
specl:constrains   a owl:ObjectProperty ; rdfs:range specl:Component .
specl:affects      a owl:ObjectProperty .

# --- Datatype properties ---
specl:intent              a owl:DatatypeProperty ; rdfs:range xsd:string .
specl:purpose             a owl:DatatypeProperty ; rdfs:range xsd:string .
specl:status              a owl:DatatypeProperty ; rdfs:range xsd:string .
specl:priority            a owl:DatatypeProperty ; rdfs:range xsd:string .
specl:acceptanceCriterion a owl:DatatypeProperty ; rdfs:range xsd:string .
specl:asA                 a owl:DatatypeProperty ; rdfs:range xsd:string .
specl:iWant               a owl:DatatypeProperty ; rdfs:range xsd:string .
specl:soThat              a owl:DatatypeProperty ; rdfs:range xsd:string .
specl:recommendation      a owl:DatatypeProperty ; rdfs:range xsd:string .
specl:owner               a owl:DatatypeProperty ; rdfs:range xsd:string .
specl:resolutionStatus    a owl:DatatypeProperty ; rdfs:range xsd:string .
specl:decisionStatus      a owl:DatatypeProperty ; rdfs:range xsd:string .
specl:rationale           a owl:DatatypeProperty ; rdfs:range xsd:string .
