@prefix IAO: <http://purl.obolibrary.org/obo/IAO_> .
@prefix cran: <https://purl.org/packagegraph/ontology/cran#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix pkg: <https://purl.org/packagegraph/ontology/core#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

cran:author a owl:DatatypeProperty ;
    rdfs:label "author"@en ;
    IAO:0000115 "Package author(s) as specified in the Author field. Semantically aligned with prov:wasAttributedTo — for structured Person entities, use pkg:maintainedBy."@en ;
    rdfs:comment "Author string from DESCRIPTION file (semantically prov:wasAttributedTo)"@en ;
    rdfs:domain cran:CranPackage ;
    rdfs:isDefinedBy cran: ;
    rdfs:range xsd:string .

cran:biocViews a owl:DatatypeProperty ;
    rdfs:label "bioconductor views"@en ;
    IAO:0000115 "Comma-separated Bioconductor topic classifications (for Bioconductor packages hosted on CRAN)."@en ;
    rdfs:domain cran:CranPackage ;
    rdfs:isDefinedBy cran: ;
    rdfs:range xsd:string .

cran:depends a owl:ObjectProperty ;
    rdfs:label "depends"@en ;
    IAO:0000115 "A Depends dependency — required for the package to load and function."@en ;
    rdfs:domain cran:CranPackage ;
    rdfs:isDefinedBy cran: ;
    rdfs:range cran:CranPackage ;
    rdfs:subPropertyOf pkg:dependsOn .

cran:enhances a owl:ObjectProperty ;
    rdfs:label "enhances"@en ;
    IAO:0000115 "An Enhances relationship — this package enhances another package."@en ;
    rdfs:domain cran:CranPackage ;
    rdfs:isDefinedBy cran: ;
    rdfs:range cran:CranPackage .

cran:imports a owl:ObjectProperty ;
    rdfs:label "imports"@en ;
    IAO:0000115 "An Imports dependency — namespaces imported but not attached to search path."@en ;
    rdfs:domain cran:CranPackage ;
    rdfs:isDefinedBy cran: ;
    rdfs:range cran:CranPackage ;
    rdfs:subPropertyOf pkg:dependsOn .

cran:linkingTo a owl:ObjectProperty ;
    rdfs:label "linking to"@en ;
    IAO:0000115 "A LinkingTo dependency — C/C++ headers needed for compilation."@en ;
    rdfs:domain cran:CranPackage ;
    rdfs:isDefinedBy cran: ;
    rdfs:range cran:CranPackage ;
    rdfs:subPropertyOf pkg:dependsOn .

cran:maintainer a owl:DatatypeProperty ;
    rdfs:label "maintainer"@en ;
    IAO:0000115 "Current package maintainer (name and email)."@en ;
    rdfs:comment "Maintainer string from DESCRIPTION file (semantically prov:wasAttributedTo)"@en ;
    rdfs:domain cran:CranPackage ;
    rdfs:isDefinedBy cran: ;
    rdfs:range xsd:string .

cran:needsCompilation a owl:DatatypeProperty ;
    rdfs:label "needs compilation"@en ;
    IAO:0000115 "Whether the package contains C/C++/Fortran code requiring compilation."@en ;
    rdfs:domain cran:CranPackage ;
    rdfs:isDefinedBy cran: ;
    rdfs:range xsd:boolean .

cran:priority a owl:DatatypeProperty ;
    rdfs:label "priority"@en ;
    IAO:0000115 "Package priority level: 'base' (part of R distribution), 'recommended' (shipped but separate), or absent for contributed packages."@en ;
    rdfs:domain cran:CranPackage ;
    rdfs:isDefinedBy cran: ;
    rdfs:range xsd:string .

cran:publishedTo a owl:ObjectProperty ;
    rdfs:label "published to"@en ;
    IAO:0000115 "Associates a package with the CRAN repository it was published to."@en ;
    rdfs:domain cran:CranPackage ;
    rdfs:isDefinedBy cran: ;
    rdfs:range cran:CranRepository .

cran:suggests a owl:ObjectProperty ;
    rdfs:label "suggests"@en ;
    IAO:0000115 "A Suggests dependency — optional, enhances functionality but not required."@en ;
    rdfs:domain cran:CranPackage ;
    rdfs:isDefinedBy cran: ;
    rdfs:range cran:CranPackage ;
    rdfs:subPropertyOf pkg:suggests .

cran:systemRequirements a owl:DatatypeProperty ;
    rdfs:label "system requirements"@en ;
    IAO:0000115 "External system libraries or tools required (e.g., 'libcurl', 'GNU make')."@en ;
    rdfs:domain cran:CranPackage ;
    rdfs:isDefinedBy cran: ;
    rdfs:range xsd:string .

cran:title a owl:DatatypeProperty ;
    rdfs:label "title"@en ;
    IAO:0000115 "One-line package title from DESCRIPTION."@en ;
    rdfs:domain cran:CranPackage ;
    rdfs:isDefinedBy cran: ;
    rdfs:range xsd:string .

cran:CranRepository a owl:Class ;
    rdfs:label "CRAN Repository"@en ;
    IAO:0000115 "A repository serving R packages, such as cran.r-project.org or a local CRAN mirror."@en ;
    rdfs:comment "A CRAN mirror or repository"@en ;
    rdfs:isDefinedBy cran: ;
    rdfs:subClassOf pkg:Repository .

cran: a owl:Ontology ;
    rdfs:label "CRAN Package Ontology"@en ;
    dcterms:abstract "Models CRAN (Comprehensive R Archive Network) packages including compilation requirements, system dependencies, priority levels, Bioconductor views, and R-specific dependency types (Depends, Imports, Suggests, LinkingTo, Enhances). Instances are dual-typed as both pkg:Package and cran:CranPackage." ;
    dcterms:created "2026-04-14"^^xsd:date ;
    dcterms:license <https://creativecommons.org/publicdomain/zero/1.0/> ;
    dcterms:modified "2026-04-21"^^xsd:date ;
    rdfs:comment "Ontology for representing CRAN packages and the R ecosystem"@en ;
    rdfs:isDefinedBy cran: ;
    rdfs:seeAlso <https://purl.org/packagegraph/ontology/cran/shapes> ;
    owl:imports pkg: ;
    owl:priorVersion <https://purl.org/packagegraph/ontology/cran/0.6.0> ;
    owl:versionIRI <https://purl.org/packagegraph/ontology/cran/0.7.0> ;
    owl:versionInfo "0.7.0" .

cran:CranPackage a owl:Class ;
    rdfs:label "CRAN Package"@en ;
    IAO:0000115 "An R package distributed through the Comprehensive R Archive Network, described by a DESCRIPTION file."@en ;
    rdfs:comment "A package published to CRAN"@en ;
    rdfs:isDefinedBy cran: ;
    rdfs:subClassOf pkg:SourcePackage .

