@prefix IAO: <http://purl.obolibrary.org/obo/IAO_> .
@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 prov: <http://www.w3.org/ns/prov#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix rpm: <https://purl.org/packagegraph/ontology/rpm#> .
@prefix vcs: <https://purl.org/packagegraph/ontology/vcs#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

rpm:Applications a rpm:RPMGroup ;
    rdfs:label "Applications"@en ;
    rdfs:comment "Application software group"@en .

rpm:Development a rpm:RPMGroup ;
    rdfs:label "Development"@en ;
    rdfs:comment "Development tools and libraries"@en .

rpm:Documentation a rpm:RPMGroup ;
    rdfs:label "Documentation"@en ;
    rdfs:comment "Documentation files"@en .

rpm:SpecFileProcessing a owl:Class ;
    rdfs:label "Spec File Processing"@en ;
    IAO:0000115 "An activity that parses an RPM spec file and executes its build instructions to create an RPM package."@en ;
    rdfs:comment "The process of parsing and executing an RPM spec file"@en ;
    rdfs:isDefinedBy rpm: ;
    rdfs:subClassOf prov:Activity .

rpm:System a rpm:RPMGroup ;
    rdfs:label "System Environment"@en ;
    rdfs:comment "System environment software"@en .

rpm:buildArch a owl:DatatypeProperty ;
    rdfs:label "build architecture"@en ;
    IAO:0000115 "The architecture of the build system where this RPM package was compiled."@en ;
    rdfs:comment "The architecture this RPM was built on"@en ;
    rdfs:domain rpm:RPMPackage ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:string .

rpm:buildHost a owl:DatatypeProperty ;
    rdfs:label "build host"@en ;
    IAO:0000115 "Specifies the hostname of the machine where the RPM package was compiled and built."@en ;
    rdfs:comment "The hostname where the package was built"@en ;
    rdfs:domain rpm:RPMPackage ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:string .

rpm:buildRequires a owl:ObjectProperty ;
    rdfs:label "build requires"@en ;
    IAO:0000115 "Specifies packages that must be installed to build this source RPM package."@en ;
    rdfs:comment "Build-time dependency relationship"@en ;
    rdfs:domain rpm:SourceRPM ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range rpm:RPMPackage ;
    rdfs:subPropertyOf pkg:buildDependsOn .

rpm:builtFromSRPM a owl:ObjectProperty ;
    rdfs:label "built from SRPM"@en ;
    IAO:0000115 "Associates a binary RPM with the SRPM creation activity that produced the source package from which it was built."@en ;
    rdfs:comment "Links a binary RPM to the SRPM creation activity that produced its source"@en ;
    rdfs:domain rpm:BinaryRPM ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range rpm:SRPMCreation ;
    rdfs:subPropertyOf prov:wasGeneratedBy .

rpm:changelogAuthor a owl:DatatypeProperty ;
    rdfs:label "changelog author"@en ;
    IAO:0000115 "Identifies the person who authored a specific changelog entry, typically including name and email address."@en ;
    rdfs:comment "The author of a changelog entry"@en ;
    rdfs:domain rpm:Changelog ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:string .

rpm:changelogText a owl:DatatypeProperty ;
    rdfs:label "changelog text"@en ;
    IAO:0000115 "Contains the descriptive text of a changelog entry detailing the changes made in a package version."@en ;
    rdfs:comment "The text content of a changelog entry"@en ;
    rdfs:domain rpm:Changelog ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:string .

rpm:changelogTime a owl:DatatypeProperty ;
    rdfs:label "changelog time"@en ;
    IAO:0000115 "Records the date and time when a changelog entry was created or when the associated changes were made."@en ;
    rdfs:comment "The timestamp of a changelog entry"@en ;
    rdfs:domain rpm:Changelog ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:dateTime .

rpm:conflicts a owl:ObjectProperty ;
    rdfs:label "conflicts"@en ;
    IAO:0000115 "Indicates that this RPM package conflicts with another package and they cannot be installed simultaneously."@en ;
    rdfs:comment "Package conflict relationship"@en ;
    rdfs:isDefinedBy rpm: ;
    rdfs:subPropertyOf pkg:conflicts .

rpm:cookie a owl:DatatypeProperty,
        owl:FunctionalProperty ;
    rdfs:label "cookie"@en ;
    IAO:0000115 "An opaque identifier used to group packages that were built together in the same build session or batch."@en ;
    rdfs:comment "An opaque identifier for tracking packages from the same build"@en ;
    rdfs:domain rpm:RPMPackage ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:string .

rpm:distTag a owl:DatatypeProperty ;
    rdfs:label "distribution tag"@en ;
    IAO:0000115 "A short identifier indicating the specific distribution version for which the package was built, such as fc35 for Fedora 35 or el8 for RHEL 8."@en ;
    rdfs:comment "The distribution tag (e.g., fc35, el8)"@en ;
    rdfs:domain rpm:RPMPackage ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:string .

rpm:distribution a owl:DatatypeProperty ;
    rdfs:label "distribution"@en ;
    IAO:0000115 "Identifies the Linux distribution for which this RPM package was built, such as Fedora, Red Hat Enterprise Linux, or CentOS."@en ;
    rdfs:comment "The distribution name (e.g., Fedora, RHEL)"@en ;
    rdfs:domain rpm:RPMPackage ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:string .

rpm:epoch a owl:DatatypeProperty,
        owl:FunctionalProperty ;
    rdfs:label "epoch"@en ;
    IAO:0000115 "An optional integer that allows package maintainers to force a version ordering when the normal version comparison would be incorrect."@en ;
    rdfs:comment "The epoch version number (optional, defaults to 0)"@en ;
    rdfs:domain pkg:Version ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:int ;
    rdfs:subPropertyOf pkg:epoch .

rpm:fileDigest a owl:DatatypeProperty ;
    rdfs:label "file digest"@en ;
    IAO:0000115 "A cryptographic hash (typically MD5, SHA1, or SHA256) of a file contained in the RPM package for integrity verification."@en ;
    rdfs:comment "Cryptographic digest of a file"@en ;
    rdfs:domain rpm:RPMPackage ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:string .

rpm:fileGroup a owl:DatatypeProperty ;
    rdfs:label "file group"@en ;
    IAO:0000115 "Specifies the Unix group ownership of a file contained in the RPM package."@en ;
    rdfs:comment "Unix group of a file"@en ;
    rdfs:domain rpm:RPMPackage ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:string .

rpm:fileMode a owl:DatatypeProperty ;
    rdfs:label "file mode"@en ;
    IAO:0000115 "Specifies the Unix file permissions (mode bits) for a file contained in the RPM package."@en ;
    rdfs:comment "Unix file permissions mode"@en ;
    rdfs:domain rpm:RPMPackage ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:int .

rpm:fileName a owl:DatatypeProperty ;
    rdfs:label "file name"@en ;
    IAO:0000115 "Specifies the full path and name of a file contained within the RPM package."@en ;
    rdfs:comment "Name of a file contained in the package"@en ;
    rdfs:domain rpm:RPMPackage ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:string .

rpm:fileOwner a owl:DatatypeProperty ;
    rdfs:label "file owner"@en ;
    IAO:0000115 "Specifies the Unix user ownership of a file contained in the RPM package."@en ;
    rdfs:comment "Unix owner of a file"@en ;
    rdfs:domain rpm:RPMPackage ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:string .

rpm:fileSize a owl:DatatypeProperty ;
    rdfs:label "file size"@en ;
    IAO:0000115 "Specifies the size in bytes of a file contained in the RPM package."@en ;
    rdfs:comment "Size of a file in bytes"@en ;
    rdfs:domain rpm:RPMPackage ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:long .

rpm:generatedBy a owl:ObjectProperty ;
    rdfs:label "generated by"@en ;
    IAO:0000115 "Associates an RPM package with the specific build activity that created it using rpmbuild."@en ;
    rdfs:comment "Links an RPM package to the build activity that created it"@en ;
    rdfs:domain rpm:RPMPackage ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range rpm:RPMBuildActivity ;
    rdfs:subPropertyOf prov:wasGeneratedBy .

rpm:gpgKeyUrl a owl:DatatypeProperty ;
    rdfs:label "GPG key URL"@en ;
    IAO:0000115 "The URL where the GPG public key for verifying repository packages can be downloaded."@en ;
    rdfs:comment "URL to the repository's GPG signing key"@en ;
    rdfs:domain rpm:RPMRepository ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:anyURI .

rpm:hasChangelog a owl:ObjectProperty ;
    rdfs:label "has changelog"@en ;
    IAO:0000115 "Associates an RPM package with its changelog entries that document the history of changes."@en ;
    rdfs:comment "Links a package to its changelog entries"@en ;
    rdfs:domain rpm:RPMPackage ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range rpm:Changelog .

rpm:hasPatch a owl:ObjectProperty ;
    rdfs:label "has patch"@en ;
    IAO:0000115 "Associates a source RPM with an individual patch file it contains."@en ;
    rdfs:comment "Links an SRPM to a patch it contains"@en ;
    rdfs:domain rpm:SourceRPM ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range rpm:Patch .

rpm:hasTag a owl:ObjectProperty ;
    rdfs:label "has tag"@en ;
    IAO:0000115 "Associates an RPM package with its metadata tags stored in the package header."@en ;
    rdfs:comment "Links a package to its RPM tags"@en ;
    rdfs:domain rpm:RPMPackage ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range rpm:RPMTag .

rpm:inGroup a owl:ObjectProperty ;
    rdfs:label "in group"@en ;
    IAO:0000115 "Associates an RPM package with its functional group classification."@en ;
    rdfs:comment "Links a package to its RPM group"@en ;
    rdfs:domain rpm:RPMPackage ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range rpm:RPMGroup .

rpm:installTime a owl:DatatypeProperty ;
    rdfs:label "install time"@en ;
    IAO:0000115 "The date and time when this RPM package was installed on a system."@en ;
    rdfs:comment "When this package was installed (if applicable)"@en ;
    rdfs:domain rpm:RPMPackage ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:dateTime .

rpm:mirrorList a owl:DatatypeProperty ;
    rdfs:label "mirror list"@en ;
    IAO:0000115 "The URL that provides a list of mirror servers for this repository."@en ;
    rdfs:comment "URL to the list of repository mirrors"@en ;
    rdfs:domain rpm:RPMRepository ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:anyURI .

rpm:nevrString a owl:DatatypeProperty ;
    rdfs:label "NEVR string"@en ;
    IAO:0000115 "The complete Name-Epoch-Version-Release string in standard RPM format."@en ;
    rdfs:comment "The complete NEVR string representation"@en ;
    rdfs:domain rpm:NEVR ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:string .

rpm:obsoletes a owl:ObjectProperty ;
    rdfs:label "makes obsolete"@en ;
    IAO:0000115 "Indicates that this RPM package makes another package obsolete and should replace it during upgrades."@en ;
    rdfs:comment "Package obsolescence relationship"@en ;
    rdfs:isDefinedBy rpm: ;
    rdfs:subPropertyOf pkg:replaces .

rpm:onPackage a owl:ObjectProperty ;
    rdfs:label "on package"@en ;
    IAO:0000115 "The target package of a dependency relationship."@en ;
    rdfs:comment "Links a dependency relationship to the target package"@en ;
    rdfs:domain rpm:Dependency ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range rpm:RPMPackage .

rpm:optFlags a owl:DatatypeProperty ;
    rdfs:label "optimization flags"@en ;
    IAO:0000115 "Specifies the compiler optimization flags that were used when building the software in this RPM package."@en ;
    rdfs:comment "The compiler optimization flags used during build"@en ;
    rdfs:domain rpm:RPMPackage ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:string .

rpm:packager a owl:DatatypeProperty ;
    rdfs:label "packager"@en ;
    IAO:0000115 "Identifies the person or organization responsible for creating the RPM package, typically including name and email address."@en ;
    rdfs:comment "The person or entity who packaged the software"@en ;
    rdfs:domain rpm:RPMPackage ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:string .

rpm:patchCount a owl:DatatypeProperty ;
    rdfs:label "patch count"@en ;
    IAO:0000115 "The total number of patch files contained in the source RPM package, providing a quick measure of divergence from the upstream source."@en ;
    rdfs:comment "Total number of patches in the SRPM"@en ;
    rdfs:domain rpm:SourceRPM ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:integer .

rpm:patchDescription a owl:DatatypeProperty ;
    rdfs:label "patch description"@en ;
    IAO:0000115 "A human-readable description of what the patch modifies and why."@en ;
    rdfs:comment "Description of what the patch does"@en ;
    rdfs:domain rpm:Patch ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:string .

rpm:patchName a owl:DatatypeProperty,
        owl:FunctionalProperty ;
    rdfs:label "patch name"@en ;
    IAO:0000115 "The filename of the patch as it appears in the SRPM and spec file."@en ;
    rdfs:comment "The filename of the patch"@en ;
    rdfs:domain rpm:Patch ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:string .

rpm:payloadCompressor a owl:DatatypeProperty ;
    rdfs:label "payload compressor"@en ;
    IAO:0000115 "Specifies the compression algorithm used to compress the package payload, such as gzip, bzip2, or xz."@en ;
    rdfs:comment "The compression method used for the payload"@en ;
    rdfs:domain rpm:RPMPackage ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:string .

rpm:payloadFormat a owl:DatatypeProperty ;
    rdfs:label "payload format"@en ;
    IAO:0000115 "Specifies the archive format used for the package payload, typically cpio."@en ;
    rdfs:comment "The format of the package payload (typically cpio)"@en ;
    rdfs:domain rpm:RPMPackage ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:string .

rpm:platform a owl:DatatypeProperty ;
    rdfs:label "platform"@en ;
    IAO:0000115 "Specifies the target platform for the package in the format architecture-operating_system-vendor."@en ;
    rdfs:comment "The platform string (arch-os-vendor)"@en ;
    rdfs:domain rpm:RPMPackage ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:string .

rpm:provides a owl:ObjectProperty ;
    rdfs:label "provides"@en ;
    IAO:0000115 "Indicates that this RPM package provides the functionality of another package or virtual package name."@en ;
    rdfs:comment "Virtual package provision"@en ;
    rdfs:isDefinedBy rpm: ;
    rdfs:subPropertyOf pkg:provides .

rpm:relocatable a owl:DatatypeProperty ;
    rdfs:label "relocatable"@en ;
    IAO:0000115 "Indicates whether the RPM package can be installed to a different location than its default prefix."@en ;
    rdfs:comment "Whether the package can be relocated during installation"@en ;
    rdfs:domain rpm:RPMPackage ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:boolean .

rpm:repomd a owl:DatatypeProperty ;
    rdfs:label "repomd"@en ;
    IAO:0000115 "The repository metadata in repomd.xml format that describes the repository structure and contents."@en ;
    rdfs:comment "Repository metadata (repomd.xml) content"@en ;
    rdfs:domain rpm:RPMRepository ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:string .

rpm:requires a owl:ObjectProperty ;
    rdfs:label "requires"@en ;
    IAO:0000115 "Specifies packages or capabilities that must be available for this RPM package to function properly at runtime."@en ;
    rdfs:comment "Runtime dependency relationship"@en ;
    rdfs:isDefinedBy rpm: ;
    rdfs:subPropertyOf pkg:dependsOn .

rpm:rpmSignature a owl:DatatypeProperty ;
    rdfs:label "RPM signature"@en ;
    IAO:0000115 "The cryptographic signature used to verify the authenticity and integrity of the RPM package."@en ;
    rdfs:comment "The cryptographic signature of the RPM package"@en ;
    rdfs:domain rpm:RPMPackage ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:string .

rpm:rpmSignatureKeyId a owl:DatatypeProperty ;
    rdfs:label "RPM signature key ID"@en ;
    IAO:0000115 "The identifier of the GPG key used to sign the RPM package."@en ;
    rdfs:comment "The key ID used to sign the RPM package"@en ;
    rdfs:domain rpm:RPMPackage ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:string .

rpm:rpmVersion a owl:DatatypeProperty ;
    rdfs:label "RPM version"@en ;
    IAO:0000115 "Specifies the version of the RPM package manager that was used to create this package."@en ;
    rdfs:comment "The version of RPM used to build the package"@en ;
    rdfs:domain rpm:RPMPackage ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:string .

rpm:upstreamStatus a owl:DatatypeProperty ;
    rdfs:label "upstream status"@en ;
    IAO:0000115 "The status of the patch relative to the upstream project, indicating whether it is a backport from a newer version, a forward port, a vendor-specific change, or has been accepted or rejected upstream. Valid values: backport, forwardPort, vendorSpecific, upstreamAccepted, upstreamRejected."@en ;
    rdfs:comment "Status of the patch relative to upstream (backport, forwardPort, vendorSpecific, upstreamAccepted, upstreamRejected)"@en ;
    rdfs:domain rpm:Patch ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:string .

rpm:usedSpecFile a owl:ObjectProperty ;
    rdfs:label "used spec file"@en ;
    IAO:0000115 "Associates an RPM build activity with the spec file that contained the build instructions."@en ;
    rdfs:comment "Links an RPM build activity to the spec file it used"@en ;
    rdfs:domain rpm:RPMBuildActivity ;
    rdfs:isDefinedBy rpm: ;
    rdfs:subPropertyOf prov:used .

rpm:vendor a owl:DatatypeProperty ;
    rdfs:label "vendor"@en ;
    IAO:0000115 "Identifies the vendor or organization that distributed this RPM package."@en ;
    rdfs:comment "The vendor of the package"@en ;
    rdfs:domain rpm:RPMPackage ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:string .

rpm:versionComparison a owl:DatatypeProperty ;
    rdfs:label "version comparison"@en ;
    IAO:0000115 "A numeric representation that allows for proper version ordering and comparison of NEVR identifiers."@en ;
    rdfs:comment "Numeric value for version comparison ordering"@en ;
    rdfs:domain rpm:NEVR ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:long .

rpm:versionConstraint a owl:DatatypeProperty ;
    rdfs:label "version constraint"@en ;
    IAO:0000115 "A string specifying the version constraint for a dependency, such as '>= 1.2.3', '< 2.0', or '= 1.5'."@en ;
    rdfs:comment "A version constraint for a dependency (e.g., '>= 1.2.3')"@en ;
    rdfs:domain rpm:Dependency ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:string .

rpm:RPMTag a owl:Class ;
    rdfs:label "RPM Tag"@en ;
    IAO:0000115 "A metadata field in the RPM package header that stores specific information about the package, such as name, version, dependencies, or file attributes."@en ;
    rdfs:comment "A metadata tag in an RPM header"@en ;
    rdfs:isDefinedBy rpm: ;
    rdfs:subClassOf owl:Thing .

rpm:SRPMCreation a owl:Class ;
    rdfs:label "SRPM Creation"@en ;
    IAO:0000115 "An activity that packages source code, patches, and spec file into a source RPM (SRPM) package."@en ;
    rdfs:comment "The process of creating a source RPM package"@en ;
    rdfs:isDefinedBy rpm: ;
    rdfs:subClassOf pkg:PackagingActivity .

rpm:buildTime a owl:DatatypeProperty,
        owl:FunctionalProperty ;
    rdfs:label "build time"@en ;
    IAO:0000115 "Records the date and time when the RPM package was compiled and built."@en ;
    rdfs:comment "The timestamp when the package was built"@en ;
    rdfs:domain rpm:RPMPackage ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:dateTime .

rpm:hasNEVR a owl:ObjectProperty ;
    rdfs:label "has NEVR"@en ;
    IAO:0000115 "Associates an RPM package with its Name-Epoch-Version-Release identifier."@en ;
    rdfs:comment "Links a package to its NEVR identifier"@en ;
    rdfs:domain rpm:RPMPackage ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range rpm:NEVR .

rpm:release a owl:DatatypeProperty,
        owl:FunctionalProperty ;
    rdfs:label "release"@en ;
    IAO:0000115 "Specifies the release number of the package, used to distinguish between different builds of the same version."@en ;
    rdfs:comment "The release number of the package"@en ;
    rdfs:domain pkg:Version ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:string ;
    rdfs:subPropertyOf pkg:release .

rpm:sourceRPM a owl:DatatypeProperty ;
    rdfs:label "source RPM"@en ;
    IAO:0000115 "Specifies the filename of the source RPM package from which this binary RPM was built."@en ;
    rdfs:comment "The filename of the source RPM this package was built from"@en ;
    rdfs:domain rpm:BinaryRPM ;
    rdfs:isDefinedBy rpm: ;
    rdfs:range xsd:string .

rpm:BinaryRPM a owl:Class ;
    rdfs:label "Binary RPM"@en ;
    IAO:0000115 "A compiled RPM package containing executable binaries, libraries, configuration files, and metadata that can be installed using YUM, DNF, or rpm command."@en ;
    rdfs:comment "A binary RPM package containing compiled software"@en ;
    rdfs:isDefinedBy rpm: ;
    rdfs:subClassOf [ a owl:Restriction ;
            owl:cardinality 1 ;
            owl:onProperty rpm:sourceRPM ],
        pkg:BinaryPackage,
        rpm:RPMPackage .

rpm:Dependency a owl:Class ;
    rdfs:label "RPM Dependency"@en ;
    IAO:0000115 "Represents a dependency relationship between RPM packages, which can include version constraints and flags."@en ;
    rdfs:comment "A dependency relationship in RPM, potentially with version constraints"@en ;
    rdfs:isDefinedBy rpm: ;
    rdfs:subClassOf pkg:Dependency .

rpm:RPMBuildActivity a owl:Class ;
    rdfs:label "RPM Build Activity"@en ;
    IAO:0000115 "An activity that uses rpmbuild to compile source code and create an RPM package from a spec file and source materials."@en ;
    rdfs:comment "The process of building an RPM package using rpmbuild"@en ;
    rdfs:isDefinedBy rpm: ;
    rdfs:subClassOf pkg:BuildActivity .

rpm:NEVR a owl:Class ;
    rdfs:label "NEVR"@en ;
    IAO:0000115 "A unique identifier for RPM packages consisting of Name, Epoch, Version, and Release components that determines package ordering and upgrade relationships."@en ;
    rdfs:comment "Name-Epoch-Version-Release identifier for RPM packages"@en ;
    rdfs:isDefinedBy rpm: ;
    rdfs:subClassOf owl:Thing .

rpm:RPMRepository a owl:Class ;
    rdfs:label "RPM Repository"@en ;
    IAO:0000115 "A repository containing RPM packages that can be accessed and managed through YUM, DNF, or other RPM-based package managers."@en ;
    rdfs:comment "A repository containing RPM packages accessible via YUM/DNF"@en ;
    rdfs:isDefinedBy rpm: ;
    rdfs:subClassOf [ a owl:Restriction ;
            owl:onProperty vcs:hasUpstreamRepository ;
            owl:someValuesFrom vcs:Repository ],
        pkg:Repository .

rpm:SourceRPM a owl:Class ;
    rdfs:label "Source RPM"@en ;
    IAO:0000115 "An RPM source package containing source code, patches, and a spec file with build instructions used to create one or more binary RPM packages."@en ;
    rdfs:comment "An RPM source package (SRPM) containing source code and spec file"@en ;
    rdfs:isDefinedBy rpm: ;
    rdfs:subClassOf pkg:SourcePackage,
        rpm:RPMPackage .

rpm:Changelog a owl:Class ;
    rdfs:label "Changelog"@en ;
    IAO:0000115 "A record of changes made to an RPM package, including version updates, bug fixes, and feature additions, with associated timestamps and author information."@en ;
    rdfs:comment "A changelog entry for an RPM package"@en ;
    rdfs:isDefinedBy rpm: ;
    rdfs:subClassOf owl:Thing .

rpm:Patch a owl:Class ;
    rdfs:label "Patch"@en ;
    IAO:0000115 "An individual patch file applied on top of upstream source code in an SRPM, representing a distro-specific modification such as a backport, configuration change, or vendor-specific customization."@en ;
    rdfs:comment "A distro-specific patch applied to upstream source in an SRPM"@en ;
    rdfs:isDefinedBy rpm: ;
    rdfs:subClassOf owl:Thing .

rpm:RPMGroup a owl:Class ;
    rdfs:label "RPM Group"@en ;
    IAO:0000115 "A hierarchical classification system for organizing RPM packages by functionality or purpose, such as Applications, Development, or System Environment."@en ;
    rdfs:comment "A categorical grouping of RPM packages (e.g., Development/Tools)"@en ;
    rdfs:isDefinedBy rpm: ;
    rdfs:subClassOf owl:Thing .

rpm:RPMPackage a owl:Class ;
    rdfs:label "RPM Package"@en ;
    IAO:0000115 "A software package in Red Hat Package Manager (RPM) format that can be managed by RPM-based package managers like YUM, DNF, or Zypper."@en ;
    rdfs:comment "A package in RPM format"@en ;
    rdfs:isDefinedBy rpm: ;
    rdfs:subClassOf [ a owl:Restriction ;
            owl:onProperty pkg:partOfDistribution ;
            owl:someValuesFrom pkg:Distribution ],
        [ a owl:Restriction ;
            owl:cardinality 1 ;
            owl:onProperty rpm:hasNEVR ],
        [ a owl:Restriction ;
            owl:cardinality 1 ;
            owl:onProperty rpm:buildTime ],
        [ a owl:Restriction ;
            owl:cardinality 1 ;
            owl:onProperty rpm:release ],
        pkg:Package .

rpm: a owl:Ontology ;
    rdfs:label "RPM Package Ontology"@en ;
    dcterms:abstract "The RPM extension specializes PackageGraph Core for Fedora, RHEL, CentOS, and other RPM-based distributions. It models NEVRA (Name-Epoch-Version-Release-Architecture) identifiers, source RPMs, RPM groups, build changelogs, and file attributes. Packages are dual-typed as both pkg:BinaryPackage and rpm:BinaryRPM, enabling unified queries across RPM and Debian ecosystems." ;
    dcterms:created "2025-09-05"^^xsd:date ;
    dcterms:creator <https://packagegraph.github.io/> ;
    dcterms:description "A comprehensive ontology for modeling RPM packages, YUM/DNF repositories, NEVR identifiers, and RPM-specific metadata including build information, changelogs, and file attributes." ;
    dcterms:license <https://creativecommons.org/publicdomain/zero/1.0/> ;
    dcterms:modified "2026-04-21"^^xsd:date ;
    dcterms:title "RPM Package Ontology" ;
    rdfs:comment "Ontology for representing RPM packages and YUM/DNF repositories"@en ;
    rdfs:isDefinedBy rpm: ;
    rdfs:seeAlso <https://purl.org/packagegraph/ontology/rpm/shapes> ;
    owl:imports pkg:,
        vcs: ;
    owl:priorVersion <https://purl.org/packagegraph/ontology/rpm/0.6.0> ;
    owl:versionIRI <https://purl.org/packagegraph/ontology/rpm/0.7.0> ;
    owl:versionInfo "0.7.0" .

