@prefix : <https://ontology.inferal.com/modules/range/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix mod: <https://w3id.org/mod#> .
@prefix ord: <https://ontology.inferal.com/modules/ordering/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix pubacc: <https://ontology.inferal.com/modules/publication-access/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix vann: <http://purl.org/vocab/vann/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

:
    a owl:Ontology, pubacc:PublicationManagedOntology ;
    dcterms:accessRights pubacc:PublicAccess ;
    owl:imports ord: ;
    dcterms:title "Range Ontology" ;
    dcterms:description "Terms for open, closed, and half-open ranges over comparable resources." ;
    dcterms:license <https://creativecommons.org/licenses/by/4.0/> ;
    dcterms:source ord: ;
    vann:preferredNamespacePrefix "rng" ;
    vann:preferredNamespaceUri "https://ontology.inferal.com/modules/range/" ;
    mod:status "draft" ;
    rdfs:comment "This module provides reusable range terms for intervals over ordered comparable resources. Domain-specific ontologies can specialize these terms for versions, dates, numeric values, or other ordered domains." ;
    owl:versionInfo "0.1.0" .

:Range
    a rdfs:Class ;
    rdfs:label "range" ;
    rdfs:comment "A possibly open-ended interval over comparable resources. Missing lower or upper bounds represent unbounded sides; inclusivity flags state whether present bounds are included." .

:lowerBound
    a rdf:Property ;
    rdfs:label "lower bound" ;
    rdfs:comment "Lower bound for a range. If omitted, the range has no lower bound." ;
    rdfs:domain :Range ;
    rdfs:range ord:Comparable .

:upperBound
    a rdf:Property ;
    rdfs:label "upper bound" ;
    rdfs:comment "Upper bound for a range. If omitted, the range has no upper bound." ;
    rdfs:domain :Range ;
    rdfs:range ord:Comparable .

:lowerInclusive
    a rdf:Property ;
    rdfs:label "lower inclusive" ;
    rdfs:comment "True when the lower bound is included in the range." ;
    rdfs:domain :Range ;
    rdfs:range xsd:boolean .

:upperInclusive
    a rdf:Property ;
    rdfs:label "upper inclusive" ;
    rdfs:comment "True when the upper bound is included in the range." ;
    rdfs:domain :Range ;
    rdfs:range xsd:boolean .

:includesValue
    a rdf:Property ;
    rdfs:label "includes value" ;
    rdfs:comment "Materialized or queried relation from a range to a comparable resource that falls inside the range." ;
    rdfs:domain :Range ;
    rdfs:range ord:Comparable .
