Capability
IAO_0000115: A functional capability provided by or required by a package, such as a shared library (e.g., libssl.so.3), virtual package name, or other abstract functionality. Critical for shared library dependency resolution - enables blast radius analysis via .so linking.
comment: A capability provided or required by packages (shared library, virtual package, etc.)
subclass of: Thing
type: Class

Source Package
comment: A package containing source code that can be built into one or more binary packages
IAO_0000115: A source package containing the original source code, build scripts, and packaging metadata required to produce one or more binary packages for distribution.
type: Class
subclass of: Package

has ABI
range: Application Binary Interface
IAO_0000115: Associates a package with the application binary interface it conforms to.
domain: Package
comment: Links a package to its application binary interface
type: ObjectProperty

was built by
comment: Links a package to the build activity that created it
range: Build Activity
sub property of: wasGeneratedBy
IAO_0000115: Associates a package with the specific build activity that compiled and created it from source materials.
type: ObjectProperty
domain: Package

license name
comment: DEPRECATED in favor of hasLicense. The SPDX license expression or license name string for the package
range: string
deprecated: true
type: DatatypeProperty
domain: Package
IAO_0000115: DEPRECATED: A string representation of the package's license. Use hasLicense to link to a License entity instead. The spdxId of the License entity linked via hasLicense is the canonical representation. This property is retained for backward compatibility with existing data but should not be used in new collectors.

depends on
comment: Indicates that a package requires another package to function
IAO_0000115: A relationship indicating that one package requires another package to be present and functional in order to operate correctly.
range: Package
type: ObjectProperty
inverse of: is dependency of
domain: Package

Meta Package
subclass of: Package
type: Class
IAO_0000115: A package that contains minimal or no files itself but serves to group related packages together through dependencies, commonly used for task-based installations.
comment: A package that exists primarily to depend on other packages

checksum algorithm
IAO_0000115: The name of the cryptographic hash algorithm used to compute this checksum value.
range: string
type: DatatypeProperty
comment: The hash algorithm (e.g., SHA-256, MD5, SHA-1)
type: FunctionalProperty
domain: Checksum

Package
subclass of: Thing
comment: A software package that can be installed, maintained, or distributed through a package management system
subclass of: Entity
subclass of: Restriction
  on property: package name
  cardinality: 1
IAO_0000115: A discrete unit of software represented in package repository metadata, typically containing executable code, configuration files, documentation, and metadata. Most packages can be installed, updated, or removed by a package management system, though some entries (such as phantom packages) exist only as metadata references.
type: Class

capability name
domain: Capability
comment: The name or identifier of a capability
IAO_0000115: The identifier for a capability, such as a shared library name (libssl.so.3), virtual package name, or other capability identifier.
range: string
type: DatatypeProperty

repository source URL
IAO_0000115: The HTTP/HTTPS URL of the package repository metadata that was used as the data source for collection. Enables traceability and re-collection.
domain: Distribution Release
type: DatatypeProperty
range: anyURI
comment: The URL from which this repository data was collected

Virtual Package
type: Class
comment: An abstract functional promise that can be satisfied by one or more concrete packages
subclass of: Capability
IAO_0000115: An abstract functional promise that can be satisfied by one or more concrete packages. Virtual packages have no artifact (no size, no checksum, no installable files) — they represent a capability that multiple packages can provide.

Phantom Package
type: Class
IAO_0000115: A package that exists in repository primary metadata (e.g., primary.xml for RPM) but has no corresponding files in the file list metadata. Common for TeX Live virtual subpackages and auto-generated meta-entries. Structurally different from a regular Package because it cannot be installed.
subclass of: Package
comment: A package entry in repository metadata that has no installable files

requires capability
domain: Package
comment: Links a package to a capability it requires
range: Capability
IAO_0000115: Associates a package with a capability it requires, such as a shared library (libssl.so.3), virtual package name, or other functionality. Critical for shared library dependency resolution - enables 'what requires this .so' queries and CVE blast radius analysis.
type: ObjectProperty

epoch
range: integer
domain: Version
comment: The epoch of the version, used in some systems to manage version comparison across different numbering schemes.
type: DatatypeProperty
IAO_0000115: A version component used to differentiate between incompatible versioning schemes or to correct mistakes in version ordering.

install size
type: DatatypeProperty
IAO_0000115: The amount of disk space, measured in bytes, that the package will occupy after being fully installed on the target system.
domain: Package
range: long
comment: The disk space required when the package is installed

supplements
domain: Package
comment: Indicates that this package supplements another package
type: ObjectProperty
IAO_0000115: Indicates that this package supplements the functionality of another package, working in tandem with it. Used in some Debian-derived distributions.
sub property of: depends on
range: Package

download URL
type: DatatypeProperty
comment: The URL from which the package can be downloaded
range: anyURI
IAO_0000115: The web address from which the package file or archive can be directly downloaded or accessed.
domain: Package

Contributor Account
subclass of: Thing
type: Class
comment: An identity or account for a contributor on a specific platform
IAO_0000115: A platform-specific identity for a contributor, such as a GitHub username, Debian maintainer email, or Fedora Account System login, enabling cross-platform contributor identification.

repository type
IAO_0000115: Classifies the repository source type to enable proper comparison semantics. Release repos are composed for end-user installation. Build repos are Koji build targets. Updates are post-release patches.
type: DatatypeProperty
domain: Distribution Release
range: string
comment: The type of package repository (release, development, build, updates, updates-testing)

suggests
type: ObjectProperty
sub property of: depends on
range: Package
IAO_0000115: An even weaker dependency relationship than recommends, indicating that the target package may be useful in certain contexts but is not typically needed. Used in Debian Suggests and RPM Suggests tags.
domain: Package
comment: Suggests another package that may be useful in some scenarios

target architecture
comment: Links a package to the architecture it targets
IAO_0000115: A relationship that associates a software package with the specific hardware or system architecture for which it has been compiled or designed.
type: ObjectProperty
domain: Package
range: Architecture

Package Management Core Ontology
description: A comprehensive ontology for modeling software packages, dependencies, repositories, and package management systems across different platforms and ecosystems.
references: bfo.owl
created: 2025-09-05
prior version: https://purl.org/packagegraph/ontology/core/0.6.0
type: Ontology
license: https://creativecommons.org/publicdomain/zero/1.0/
comment: Core ontology for representing software packages and repositories across different package management systems. Upper ontology positioning: PackageGraph adopts lightweight alignment to established domain vocabularies (PROV-O, FOAF, SPDX, DOAP) rather than full BFO or DOLCE alignment. Software packages are informational artifacts whose lifecycle includes physical manifestations (installed files) and social roles (maintainers). BFO's material-entity/process distinction and DOLCE's cognitive/social focus do not cleanly categorize these hybrid entities. Our alignment strategy prioritizes semantic interoperability with domain-standard vocabularies over foundational ontology categorization. Multilingual metadata design: PackageGraph does not mandate @en language tags on data literals for graph efficiency — package names are technical identifiers, not translatable text, and adding language tags to 62.7M string literals increases storage cost and breaks existing SPARQL queries. However, the ontology acknowledges that multilingual package metadata is a real domain concern: Debian and Ubuntu maintain dedicated localisation teams (debian-l10n-english, ubuntu-translators) providing meticulously translated descriptions for packages like apache2, nginx, and postgresql. The RDF literal language tag mechanism remains available for collectors that ingest such translated metadata — the ontology does not prohibit language-tagged literals, it simply does not require them for monolingual English data.
modified: 2026-04-21
creator: PackageGraph Project
abstract: PackageGraph Core defines the foundational classes and properties for representing software packages across Linux distributions and other package ecosystems. It models binary and source packages, versioned dependencies with constraints, maintainers, architectures, and distribution releases as a connected RDF graph. The ontology serves as the shared schema that distribution-specific extensions (Debian, RPM, Arch, etc.) specialize, enabling cross-distribution queries over a unified SPARQL endpoint.
version IRI: https://purl.org/packagegraph/ontology/core/0.7.0
references: DOLCEbasic
version info: 0.7.0

has maintenance role
range: Maintainer
IAO_0000115: Associates a package with a Maintainer role assignment, providing access to role type (via hasMaintainerRole), start date (via maintainerSince), and the agent holding the role (via heldBy).
type: ObjectProperty
comment: Links a package to a maintenance role assignment providing detailed role metadata
domain: Package

part of ecosystem
IAO_0000115: Associates a distribution with the broader package ecosystem it belongs to.
domain: Distribution
range: Package Ecosystem
type: ObjectProperty
comment: Links a distribution to its broader ecosystem

recommends
type: ObjectProperty
comment: Suggests installing another package for enhanced functionality
domain: Package
sub property of: depends on
range: Package
IAO_0000115: A weak dependency relationship suggesting that installing the target package enhances functionality but is not required. Used in Debian Recommends and RPM Recommends tags. If package A recommends package B, A works without B but gains features when B is present.

project repository
IAO_0000115: Links an upstream project to its primary source code repository. Makes UpstreamProject the central hub for cross-ecosystem identity - connect all ecosystem packages to the project, then to the shared repository.
comment: Links an upstream project to its VCS repository
domain: Upstream Project
type: ObjectProperty
range: Repository

Software Agent
type: Class
subclass of: SoftwareAgent
disjoint with: Person
IAO_0000115: An automated software system that performs package maintenance tasks, such as dependency update bots (Renovate, Dependabot), CI/CD pipelines, or automated security patchers. Distinguished from Person to preserve OntoClean rigidity — a bot is not a foaf:Person.
comment: An automated software agent performing package maintenance tasks

maintainer since
IAO_0000115: Records when a maintainer began their maintenance responsibilities for a package.
domain: Maintainer
type: DatatypeProperty
range: dateTime
comment: Date when the maintainer started maintaining the package

superseded by
domain: Package
type: ObjectProperty
IAO_0000115: Indicates that this package's functionality has been absorbed into another package due to subpackage reorganization across architectures or builds. Used to track packages that exist on some arches but are merged into others on different arches.
range: Package
comment: Indicates that this package's functionality has been absorbed into another package (subpackage reorganization)
inverse of: supersedes

cross-distribution alternative
comment: Links packages that serve similar functions across distributions. Intentionally non-transitive: A~B and B~C does not imply A~C.
IAO_0000115: Associates packages from different distributions that provide similar functionality or serve analogous purposes. This is a correspondence assertion, not formal equivalence — it is symmetric but intentionally NOT transitive, as cross-distribution package equivalence is context-dependent (e.g., Debian libssl-dev corresponds to Fedora openssl-devel, but Alpine equivalents may differ in ABI or capabilities).
type: SymmetricProperty
type: ObjectProperty
domain: Package
range: Package

version constraint operator
IAO_0000115: The comparison operator that defines how the version constraint should be evaluated, such as greater than, equal to, or less than.
type: DatatypeProperty
domain: Version Constraint
range: string
comment: The comparison operator used in a version constraint (e.g., '>=', '=', '<=')

part of release
inverse of: release contains
type: ObjectProperty
comment: Links packages or repositories to a specific distribution release
range: Distribution Release
IAO_0000115: Associates packages, repositories, or other components with a specific versioned release of a distribution.

snapshot source
range: string
IAO_0000115: A string identifying the tool and data source that produced this snapshot.
comment: Identifier of the data source that produced this snapshot (e.g., 'pg-collect debian', 'enricher-osv').
domain: Data Snapshot
type: DatatypeProperty

has instruction set architecture
comment: Links a package to its instruction set architecture
type: ObjectProperty
domain: Package
IAO_0000115: Associates a binary package with the specific instruction set architecture it was compiled for.
range: Instruction Set Architecture

Maintainer Role
subclass of: Thing
type: Class
comment: The specific role a maintainer plays for a package
IAO_0000115: Defines the specific responsibilities and authority level of a maintainer for a package, such as primary maintainer, co-maintainer, or sponsor.

version string
domain: Version
type: DatatypeProperty
comment: The version identifier of a package
IAO_0000115: A textual representation of a package version, typically following semantic versioning or other versioning schemes to indicate the release sequence and compatibility.
type: FunctionalProperty
range: string

dependency weight
type: DatatypeProperty
range: float
domain: Dependency
comment: Relative weight or importance of a dependency
IAO_0000115: Provides a numeric weight indicating the relative importance or strength of a dependency relationship.

is provided by
IAO_0000115: The inverse relationship of provides, indicating that this package's functionality is offered by another package.
type: ObjectProperty
range: Package
domain: Package
inverse of: provides
comment: Indicates that this package's functionality is provided by another package

derived from distribution
comment: Indicates that one distribution is derived from another
IAO_0000115: Indicates that one distribution is derived from another (e.g., Ubuntu from Debian, CentOS from RHEL), establishing distribution lineage for package tracking.
range: Distribution
type: ObjectProperty
domain: Distribution

is current
type: DatatypeProperty
range: boolean
type: FunctionalProperty
domain: Data Snapshot
IAO_0000115: A boolean flag indicating whether this snapshot is the most recent for its data source. Used for tiered storage lifecycle management.
comment: Whether this snapshot represents the current active data for its source.

upstream ecosystem
domain: Package
IAO_0000115: Links a package to the upstream software ecosystem it originates from, enabling ecosystem-level cross-referencing and analysis. The Ecosystem entity allows traversal to all packages from that ecosystem rather than matching string literals.
range: Package Ecosystem
type: ObjectProperty
comment: The upstream package ecosystem entity (cargo, pypi, npm, gomod, etc.)

Dependency
type: Class
comment: A relationship indicating that one package requires another package to function properly
subclass of: Thing
IAO_0000115: A requirement relationship between software packages where one package needs another package to be present and functional in order to operate correctly.

has maintainer role
comment: Links a maintainer to their specific role
IAO_0000115: Associates a maintainer with their specific role and responsibilities for packages.
range: Maintainer Role
type: ObjectProperty
domain: Maintainer

has contributor
type: ObjectProperty
comment: Links a repository directly to contributing agents (persons or software agents). Conceptually related to contributesTo (Contributor→Repository), but not formally inverse to avoid OntoClean role/identity collapse.
range: Agent
domain: Repository
IAO_0000115: Convenience property linking a repository directly to the agents (Person or SoftwareAgent) contributing to it. For detailed role information, traverse via contribution role assignments.

account platform
IAO_0000115: Identifies the platform or service where a contributor account is registered, such as GitHub, Debian, Fedora, or GitLab.
comment: The platform or service where the account exists
range: string
type: DatatypeProperty
domain: Contributor Account

identity name
type: DatatypeProperty
range: string
type: FunctionalProperty
IAO_0000115: The package name as used for the version-agnostic identity within a distribution and architecture context. This provides a lexical anchor for PackageIdentity instances, distinct from the versioned packageName on Package instances.
domain: Package Identity
comment: The name of the package identity

Version Constraint
subclass of: Thing
IAO_0000115: A structured specification that defines acceptable version ranges for package dependencies, including operators and target versions.
type: Class
comment: A structured representation of version constraints for dependencies

excluded architecture
IAO_0000115: Indicates an architecture on which this package is known to be unavailable due to architectural constraints or hardware requirements, not build failures. Used to distinguish missing packages from architecturally impossible ones.
range: Architecture
domain: Package Identity
comment: Indicates an architecture on which this package is known to be unavailable due to architectural constraints
type: ObjectProperty

SPDX identifier
range: string
IAO_0000115: The SPDX License List identifier for this license (e.g., 'GPL-2.0-only', 'MIT', 'Apache-2.0'), enabling mechanically queryable license classification and compatibility analysis.
type: FunctionalProperty
domain: License
comment: The SPDX license identifier
type: DatatypeProperty

Contribution Type
type: Class
IAO_0000115: Categorizes the nature of contributions made to a package, such as code, documentation, packaging, or security updates.
subclass of: Thing
comment: The type of contribution made to a package

revision
type: DatatypeProperty
IAO_0000115: A version component that specifies a minor update or packaging-specific revision.
range: string
domain: Version
comment: The revision of the package, often indicating a minor packaging update or a source control revision.

package name
type: FunctionalProperty
comment: The name of a package
type: DatatypeProperty
IAO_0000115: The unique identifier or name by which a software package is known within a package management system.
range: string
domain: Package

Package Identity
IAO_0000115: A stable, version-independent identifier for a package name within a specific distribution, release, and architecture. BinaryPackage instances link to their identity via isVersionOf. Dependencies point to the identity, enabling direct name-based joins without URI parsing.
subclass of: Thing
type: Class
comment: The version-agnostic identity of a package within a distribution and architecture. Dependency targets point to this instead of versioned instances.

Upstream Project
subclass of: Thing
subclass of: Project
comment: An upstream open source project that is packaged by one or more distributions
IAO_0000115: An upstream software project that serves as the origin for packages across multiple distributions, enabling cross-distribution analysis through a shared identity. Aligned with DOAP (Description of a Project) vocabulary — upstream projects are software projects with maintainers, repositories, and releases.
subclass of: Restriction
  on property: project name
  cardinality: 1
type: Class

directly provides
domain: Package
sub property of: provides
comment: Direct provision relationship between packages for efficient querying
IAO_0000115: A direct provision relationship indicating that one package provides the functionality of another, optimized for efficient dependency resolution queries.
type: ObjectProperty
range: Package

is dependency of
domain: Package
comment: Indicates that this package is a dependency of another package
type: ObjectProperty
IAO_0000115: The inverse relationship of dependsOn, indicating that this package is required by another package.
range: Package

produced binary
IAO_0000115: Associates a source package with the binary packages produced by building it.
range: Binary Package
comment: Links a source package to binary packages it produces
type: ObjectProperty
domain: Source Package

has account
IAO_0000115: Associates a person with a ContributorAccount representing their identity on a specific platform (e.g., GitHub username, Fedora Account System login, Debian maintainer email).
range: Contributor Account
comment: Links a person to their platform account identifier
type: ObjectProperty
domain: Person

release date
type: DatatypeProperty
IAO_0000115: The date when a distribution release was officially published or made available.
range: date
domain: Distribution Release
comment: The date the distribution release was published

Test Activity
subclass of: Activity
type: Class
IAO_0000115: An activity that executes test suites to verify the functionality and quality of a software package.
comment: The process of running tests on a package

dependency type
comment: The type of dependency relationship, represented by the URI of the corresponding shortcut property
IAO_0000115: Classifies the nature of a dependency relationship by linking the reified Dependency node directly to the formal property predicate that defines its semantics. Values are property URIs (pkg:dependsOn, pkg:buildDependsOn, pkg:recommends, etc.) using OWL 2 punning. This harmonizes the dual-model: the reified node references the exact shortcut predicate it represents, unifying what was previously a disconnected magic string with the traversable property hierarchy.
domain: Dependency
type: ObjectProperty

derived from commit
sub property of: wasDerivedFrom
range: Commit
IAO_0000115: Associates a package with the specific VCS commit from which it was built, enabling precise source-to-binary traceability and build reproducibility verification.
type: ObjectProperty
comment: Links a package to the VCS commit it was built from
domain: Package

activity duration
comment: How long a packaging activity took to complete
range: duration
IAO_0000115: The total time duration required to complete a packaging-related activity.
type: DatatypeProperty
domain: Activity

pre-depends
IAO_0000115: A strict dependency that must be fully installed and configured before this package can even be unpacked. Stronger than regular depends. Used in Debian Pre-Depends tag for critical system dependencies.
comment: Indicates a pre-installation dependency (stronger than regular depends)
sub property of: depends on
type: ObjectProperty
range: Package
domain: Package

release version
domain: Distribution Release
range: string
comment: The version number of the distribution release
type: DatatypeProperty
IAO_0000115: The version identifier of a distribution release, such as '12' for Debian 12 or '41' for Fedora 41.

provides capability
type: ObjectProperty
comment: Links a package to a capability it provides
domain: Package
range: Capability
IAO_0000115: Associates a package with a capability it provides, such as a shared library (libssl.so.3), virtual package name, or other functionality. Critical for shared library dependency resolution - enables 'what provides this .so' queries.

Installed File
comment: A file installed on the system by a binary package
subclass of: Thing
type: Class
IAO_0000115: A file that is installed on the target filesystem when a binary package is installed, including executables, libraries, configuration files, and documentation.

activity log output
IAO_0000115: The textual log output generated during the execution of a packaging activity, useful for debugging and auditing.
domain: Activity
range: string
comment: Log output generated during a packaging activity
type: DatatypeProperty

last release date
comment: The date of the most recent release or version
type: DatatypeProperty
IAO_0000115: The date of the most recent release or version of the package, enabling recency analysis and stale package detection.
range: date
domain: Package Identity

supersedes
IAO_0000115: Indicates that this package absorbs the functionality of another package, typically due to subpackage consolidation or reorganization across architectures.
inverse of: superseded by
comment: Indicates that this package absorbs the functionality of another package
domain: Package
range: Package
type: ObjectProperty

Packaging Activity
comment: The process of creating a package from source materials
IAO_0000115: An activity that transforms source code, configuration files, and other materials into a distributable package format.
subclass of: Activity
type: Class

contributes to
domain: Contributor
range: Repository
type: ObjectProperty
IAO_0000115: Associates a contributor role with repositories it contributes to, enabling analysis of contributor activity across repositories.
comment: Links a contributor role to repositories it contributes to. Conceptually related to hasContributor (Repository→Agent convenience shortcut), but not formally inverse to avoid OntoClean role/identity collapse.

Installation Activity
comment: The process of installing a package on a system
IAO_0000115: An activity that deploys a package and its dependencies onto a target system, making the software available for use.
subclass of: Activity
type: Class

has release
comment: Links a distribution to one of its releases
domain: Distribution
range: Distribution Release
type: ObjectProperty
IAO_0000115: Associates a distribution with a specific versioned release, such as Debian 12 or Fedora 41.

Data Snapshot
subclass of: Entity
IAO_0000115: A record of a data collection or enrichment run, tracking the named graph URI, source identifier, timestamp, and currency status for graph lifecycle management.
type: Class
comment: Metadata about a named graph — when it was collected, from what source, whether it is current.

packaging repository
type: ObjectProperty
range: Repository
IAO_0000115: Associates a package identity with the distribution-specific repository that contains the packaging metadata (debian/ directory, spec files, patches). Distinct from the upstream repository — packaging repos are distro-specific while upstream repos are universal.
comment: The distribution-specific packaging repository (e.g., Debian Salsa, Fedora dist-git). Contains packaging rules, patches, and build configuration.
domain: Package Identity

Contributor
comment: A contribution role assignment linking a person to a package or repository
subclass of: Thing
type: Class
IAO_0000115: A role assignment representing a person's contribution to a package or repository. This is an anti-rigid concept — a person can start or stop holding this role without ceasing to exist.

provides
comment: Indicates that a package provides the functionality of another package
IAO_0000115: A relationship indicating that one package offers the same functionality or interface as another package, potentially serving as a substitute or alternative implementation.
type: ObjectProperty
domain: Package
range: Package

maintained by
inverse of: maintains
domain: Package
sub property of: wasAttributedTo
comment: Links a package directly to the agent (person or software agent) maintaining it
range: Agent
type: ObjectProperty
IAO_0000115: Convenience property linking a package directly to the agent (Person or SoftwareAgent) maintaining it. For detailed role metadata (role type, start date), use hasMaintenanceRole.

release
IAO_0000115: An identifier for the packaging release of a specific version of the upstream software.
range: string
domain: Version
comment: The release number of the package, often indicating a packaging-specific update.
type: DatatypeProperty

upstream package identity
range: Package Identity
comment: Links to the upstream package identity in its native ecosystem
domain: Package Identity
type: ObjectProperty
IAO_0000115: Links a distribution package identity to the upstream package identity in the native ecosystem (e.g., Debian python3-requests → PyPI requests). Replaces dead-end upstreamPackageName literal with a traversable object property - critical for supply chain analysis.

Checksum
comment: A cryptographic hash of a package file, pairing the hash value with its algorithm
type: Class
IAO_0000115: A reified checksum associating a cryptographic hash value with the algorithm used to compute it, enabling packages to carry multiple checksums of different types (e.g., SHA-256 and MD5 simultaneously).
subclass of: Thing

activity start time
domain: Activity
comment: When a packaging activity began
range: dateTime
type: DatatypeProperty
sub property of: startedAtTime
IAO_0000115: Records the date and time when a packaging-related activity was initiated.

has upstream project
type: ObjectProperty
comment: Links a source package to the upstream project it packages
range: Upstream Project
domain: Source Package
IAO_0000115: Associates a source package with the upstream open source project that it packages for distribution.

ecosystem package
type: ObjectProperty
IAO_0000115: Links an upstream project to package identities in various ecosystems (PyPI, npm, Cargo, etc.). Enables queries like 'what packages from different ecosystems come from the same project'.
range: Package Identity
comment: Links an upstream project to a package identity in a specific ecosystem
domain: Upstream Project

enhances
domain: Package
range: Package
IAO_0000115: A reverse-direction weak dependency indicating that installing this package enhances the functionality of the target package. Used in Debian Enhances tag. If package A enhances package B, installing A provides additional features to B.
type: ObjectProperty
sub property of: depends on
comment: Indicates that this package enhances another package's functionality

contains
domain: Repository
comment: Links a repository to the packages it contains
type: ObjectProperty
IAO_0000115: A relationship that associates a repository with the packages it hosts and makes available for distribution.
range: Package

replaces
type: ObjectProperty
type: IrreflexiveProperty
range: Package
type: AsymmetricProperty
IAO_0000115: An asymmetric relationship indicating that one package is intended to supersede and replace another package, typically during system upgrades or package transitions. If package A replaces package B, then package B does not replace package A.
comment: Indicates that a package replaces another package (asymmetric relationship)
domain: Package

used source
sub property of: used
domain: Packaging Activity
IAO_0000115: Associates a packaging activity with the source code, files, or other materials it used as input.
type: ObjectProperty
range: Entity
comment: Links a packaging activity to source materials it used

derived from
IAO_0000115: Specifies that one distribution is based on or derived from another distribution's codebase and package set.
range: Distribution
domain: Distribution
comment: Indicates that one distribution is derived from another
type: ObjectProperty

account username
domain: Contributor Account
range: string
IAO_0000115: The username, login, or unique identifier of a contributor on a specific platform.
type: DatatypeProperty
comment: The username or identifier on the platform

upstream package name
type: DatatypeProperty
comment: The name of the package in its upstream ecosystem (e.g., crate name, PyPI name)
range: string
IAO_0000115: The canonical name of the upstream software in its native package ecosystem, extracted from RPM provides entries like crate(foo) or python3dist(bar). Enables cross-ecosystem identity linking. Retained for backward compatibility - prefer upstreamPackageIdentity for new data.
domain: Package

maintains
type: ObjectProperty
IAO_0000115: The inverse of maintainedBy, linking an agent (Person or SoftwareAgent) to the packages they maintain.
range: Package
comment: Links an agent (person or software agent) to the packages they maintain
domain: Agent

used dependency
sub property of: used
comment: Links a build activity to dependencies it required
domain: Build Activity
type: ObjectProperty
IAO_0000115: Associates a build activity with the packages or dependencies it required during the build process.
range: Package

release codename
domain: Distribution Release
IAO_0000115: The informal name or codename of a distribution release, such as 'bookworm' for Debian 12 or 'noble' for Ubuntu 24.04.
type: DatatypeProperty
comment: The codename of the distribution release
range: string

project URL
IAO_0000115: The primary website or homepage URL for an upstream open source project.
type: DatatypeProperty
comment: The primary URL for the upstream project
range: anyURI
domain: Upstream Project

ISA-specific code
range: boolean
type: DatatypeProperty
IAO_0000115: Indicates whether the package contains processor-specific optimizations or machine code that is optimized for a particular instruction set architecture.
comment: Indicates whether the package contains ISA-specific optimizations
domain: Package

has checksum
range: Checksum
comment: Links a package to one of its checksums
domain: Package
IAO_0000115: Associates a package with a Checksum instance containing a hash value and algorithm.
type: ObjectProperty

satisfies capability
type: ObjectProperty
comment: The abstract capability that this installed file satisfies (typically for shared libraries)
range: Capability
domain: Installed File
IAO_0000115: Links an installed file (typically a shared library .so artifact) to the abstract capability it satisfies, closing the loop between filesystem artifacts and package dependency requirements. This shortcut enables efficient queries for shared library resolution analysis: which specific file provides libssl.so.3?

performed by
domain: Packaging Activity
IAO_0000115: Associates a packaging activity with the agent (person, organization, or automated system) that performed it.
range: Agent
type: ObjectProperty
sub property of: wasAssociatedWith
comment: Links a packaging activity to the agent that performed it

snapshot graph
comment: The named graph URI this snapshot was loaded into.
domain: Data Snapshot
type: DatatypeProperty
IAO_0000115: The URI of the named graph in Fuseki that contains this snapshot's data.
range: anyURI

installs file
IAO_0000115: Associates a binary package with a file it installs on the target filesystem.
type: ObjectProperty
domain: Binary Package
comment: Links a binary package to a file it installs on the system
range: Installed File

has license
IAO_0000115: A relationship that associates a software package with the legal license under which it is distributed and may be used.
type: ObjectProperty
comment: Links a package to its license
domain: Package
range: License

account URL
IAO_0000115: The web URL of a contributor's profile page on a specific platform.
type: DatatypeProperty
domain: Contributor Account
comment: The URL of the contributor's profile on the platform
range: anyURI

Application Binary Interface
comment: The binary interface specification for a platform
IAO_0000115: The low-level binary interface that defines calling conventions, data layouts, and system call interfaces for a specific platform.
subclass of: Thing
type: Class

Version
subclass of: Thing
subclass of: Restriction
  cardinality: 1
  on property: version string
IAO_0000115: A specific release or iteration of a software package, identified by a version string and representing a particular state of the package's development.
comment: A specific version or release of a package
type: Class

Person
equivalent class: Person
IAO_0000115: A rigid identity representing a human individual. Persons hold roles (Contributor, Maintainer) which are time-dependent and context-dependent. The same Person can maintain packages in multiple distributions and hold different roles over time.
type: Class
comment: A human individual who can hold contributor or maintainer roles across packages and distributions
subclass of: Agent

supported architecture
range: Architecture
comment: An architecture that the source package can be built for
IAO_0000115: Associates a source package with an architecture it declares support for building, as declared in the source package control file.
type: ObjectProperty
domain: Source Package

checksum value
IAO_0000115: The actual cryptographic hash value as a hexadecimal string.
domain: Checksum
type: FunctionalProperty
comment: The hexadecimal hash string
range: string
type: DatatypeProperty

PackageGraph Project
type: Organization

built from source
sub property of: wasDerivedFrom
IAO_0000115: Associates a binary package with the source package from which it was compiled, enabling grouping of related binary outputs.
inverse of: produced binary
comment: Links a binary package to the source package it was built from
type: AsymmetricProperty
type: ObjectProperty
range: Source Package
domain: Binary Package

is direct dependency of
type: ObjectProperty
domain: Package
IAO_0000115: The inverse relationship of directlyDependsOn, indicating that this package is a direct dependency of another package. Critical for blast radius analysis - enables efficient queries for 'what directly depends on this package'.
comment: Indicates that this package is a direct dependency of another package
range: Package
sub property of: is dependency of

part of distribution
IAO_0000115: Associates packages, repositories, or other components with their parent distribution.
type: ObjectProperty
range: Distribution
comment: Links packages or repositories to their parent distribution

holds role
IAO_0000115: Associates an agent (Person or SoftwareAgent) with a contribution or maintenance role assignment.
type: ObjectProperty
range: Contributor
comment: Links an agent (person or software agent) to a contributor or maintainer role they hold
domain: Agent

Build Activity
subclass of: Activity
IAO_0000115: An activity that compiles source code and creates executable binaries or libraries as part of the packaging process. Aligned with PROV-O Activity concept — builds are time-bounded activities with agents (builders) and entities (source/binary artifacts).
subclass of: Packaging Activity
comment: The process of compiling and building software from source
type: Class

version of
domain: Version
range: Package
comment: Links a version to the package it belongs to
IAO_0000115: The inverse relationship of hasVersion, linking a version back to the package it belongs to. Critical for security queries that start from an affected version and need to find the package.
type: ObjectProperty

has version constraint
comment: Links a dependency to a structured version constraint
type: ObjectProperty
domain: Dependency
range: Version Constraint
IAO_0000115: Associates a dependency with a structured version constraint that specifies acceptable version ranges.

Maintainer
IAO_0000115: A maintenance role assignment linking a person to a package they maintain. This is an anti-rigid concept — a maintenance role assignment can begin or end without the person ceasing to exist.
comment: A maintenance role assignment linking a person to a package
type: Class
subclass of: Contributor

is version of
inverse of: has package
domain: Binary Package
range: Package Identity
IAO_0000115: Associates a specific versioned binary package with the canonical package identity it belongs to. Enables queries that traverse from a versioned instance to all other versions of the same package.
comment: Links a versioned binary package to its version-agnostic package identity.
type: ObjectProperty

directly depends on
property chain axiom: has dependency
property chain axiom: dependency target
comment: Materialized convenience shortcut of the hasDependency → dependencyTarget chain. For version constraint details, traverse the Dependency reification. NOTE: owl:propertyChainAxiom requires OWL 2 reasoning to materialize — Fuseki without OWL reasoning will not auto-derive this property from hasDependency chains.
range: Package
IAO_0000115: A direct dependency relationship between packages, providing an efficient query path that bypasses the detailed dependency metadata structure. This property is a materialized convenience shortcut semantically grounded by the property chain axiom: if X hasDependency D and D dependencyTarget Y, then X directlyDependsOn Y. For version constraint details, traverse the Dependency reification.
type: ObjectProperty
sub property of: depends on
inverse of: is direct dependency of
domain: Package

Package Set
IAO_0000115: A named collection of packages within a distribution or product, used to define subsets such as base systems, application streams, or product-specific package sets.
type: Class
comment: A named subset of packages within a distribution or product
subclass of: Thing

description
range: string
domain: Package
IAO_0000115: A textual explanation of the package's purpose, functionality, and features, intended to help users understand what the package provides.
type: DatatypeProperty
comment: A human-readable description of what the package does

applicable architecture
IAO_0000115: Specifies the architecture(s) for which this dependency applies. Many package ecosystems support architecture-conditional dependencies: RPM allows architecture qualifiers in Requires directives (e.g., glibc is required on x86_64 but not wasm), Debian allows architecture restrictions in Build-Depends fields (e.g., [amd64] [arm64]). When omitted, the dependency applies to all architectures.
range: Architecture
domain: Dependency
comment: The architecture(s) for which this dependency applies (architecture-conditional dependencies)
type: ObjectProperty

Package Manager
type: Class
IAO_0000115: A software application or system that automates the process of installing, upgrading, configuring, and removing software packages, including dependency resolution and conflict management.
comment: A software tool that manages the installation, updating, and removal of packages
subclass of: Thing

contained in
type: ObjectProperty
IAO_0000115: A relationship that associates a software package with the repository where it is stored and made available for distribution.
domain: Package
range: Repository
inverse of: contains
comment: Links a package to the repository that contains it

manages
range: Repository
domain: Package Manager
type: ObjectProperty
IAO_0000115: A relationship that associates a package manager with the repositories it controls and provides access to.
comment: Links a package manager to the repositories it manages

Instruction Set Architecture
type: Class
subclass of: Architecture
comment: The specific instruction set architecture (ISA) for binary packages
IAO_0000115: The processor instruction set architecture that defines the machine code interface, such as x86_64, ARM64, or RISC-V.

member of package set
IAO_0000115: Associates a package with a named package set that it belongs to, enabling classification of packages into product-specific or distribution-specific groupings.
type: ObjectProperty
domain: Package
range: Package Set
comment: Links a package to a package set it belongs to

is vendor originated
type: DatatypeProperty
domain: Package
range: boolean
comment: Whether the upstream project was created by the packaging vendor
IAO_0000115: Indicates whether the upstream project was originated by the same organization that packages and distributes it, as opposed to being an independent community project.

dependency target
range: Package
type: ObjectProperty
comment: The package that a dependency relationship targets
domain: Dependency
IAO_0000115: Identifies the specific package that satisfies a dependency, linking the reified Dependency to its target Package.

is replaced by
comment: Indicates that this package is replaced by another package
type: ObjectProperty
inverse of: replaces
range: Package
domain: Package
IAO_0000115: The inverse relationship of replaces, indicating that this package is superseded by another package.

has version
inverse of: version of
type: ObjectProperty
range: Version
domain: Package
comment: Links a package to one of its versions
IAO_0000115: A relationship that associates a software package with a specific version or release of that package.

Distribution Release
type: Class
comment: A specific versioned release of a distribution
IAO_0000115: A specific versioned release of a Linux distribution, such as Debian 12 (bookworm) or Fedora 41, containing a defined set of packages.
subclass of: Thing

Architecture
IAO_0000115: The specific hardware platform, instruction set, or system architecture for which a software package has been compiled or designed to run.
comment: The hardware or software architecture for which a package is built
subclass of: Thing
type: Class

installed file path
IAO_0000115: The absolute filesystem path where a file is installed on the target system, such as /usr/bin/gcc or /usr/lib/libssl.so.3.
type: DatatypeProperty
range: string
domain: Installed File
comment: The filesystem path where the file is installed

activity end time
sub property of: endedAtTime
IAO_0000115: Records the date and time when a packaging-related activity was completed.
type: DatatypeProperty
range: dateTime
comment: When a packaging activity completed
domain: Activity

held by
domain: Contributor
IAO_0000115: The inverse of holdsRole — links a role assignment to the agent (Person or SoftwareAgent) holding it, enabling representation of both human maintainers and automated bot contributors.
type: ObjectProperty
comment: Links a role assignment back to the agent (person or software agent) who holds it
range: Agent
inverse of: holds role

check requires
type: ObjectProperty
sub property of: depends on
range: Package
domain: Source Package
IAO_0000115: A test-time dependency required to run a source package's test suite but not needed for building or runtime. Used in RPM BuildRequires with check context.
comment: Indicates a test-time dependency for running the package's test suite

exit code
type: DatatypeProperty
IAO_0000115: The numeric exit code returned by a packaging activity, indicating success (typically 0) or failure (non-zero).
domain: Activity
range: int
comment: The exit code returned by a packaging activity

project name
range: string
IAO_0000115: The canonical or commonly used name of an upstream open source project, such as 'openssl' or 'gcc'.
comment: The canonical name of the upstream project
type: DatatypeProperty
domain: Upstream Project

License
subclass of: Thing
comment: The legal license under which a package is distributed
IAO_0000115: A legal document or agreement that specifies the terms and conditions under which a software package may be used, modified, and distributed.
type: Class

managed by
inverse of: manages
IAO_0000115: A relationship that associates a package repository with the package management system that controls and provides access to it.
range: Package Manager
type: ObjectProperty
domain: Repository
comment: Links a repository to the package manager that manages it

upstream repository
type: ObjectProperty
inverse of: hasPackage
range: Repository
IAO_0000115: Associates a package identity with the canonical upstream source code repository. This is the primary cross-distribution identity anchor — packages from different distros that share the same upstream repository are the same software, regardless of package name.
comment: The upstream VCS repository this package is built from. Derived from Homepage/URL when it points to a known forge, or from dist-git spec files.
domain: Package Identity

purl
type: DatatypeProperty
IAO_0000115: Package URL (PURL) - a standardized, universal identifier for software packages across ecosystems (e.g., pkg:npm/lodash@4.17.21, pkg:pypi/requests@2.28.0). Enables cross-tool interoperability and SBOM generation.
domain: Package Identity
comment: Package URL (PURL) - standardized package identifier
range: anyURI

end of life date
comment: The date when the distribution release reaches end of life
range: date
domain: Distribution Release
type: DatatypeProperty
IAO_0000115: The date when a distribution release ceases to receive security updates and support.

active contributor
IAO_0000115: Indicates whether a contributor is currently active in package development or maintenance.
range: boolean
type: DatatypeProperty
domain: Contributor
comment: Whether the contributor is currently active

version constraint value
comment: The version value used in a version constraint
IAO_0000115: The specific version string that the constraint is compared against using the constraint operator.
type: DatatypeProperty
domain: Version Constraint
range: string

directly conflicts with
domain: Package
range: Package
IAO_0000115: A direct conflict relationship between packages, providing an efficient query path for identifying incompatible packages.
sub property of: conflicts
type: SymmetricProperty
comment: Direct conflict relationship between packages for efficient querying
type: ObjectProperty

homepage
IAO_0000115: The web address of the main website or homepage associated with the software package or its development project.
comment: The homepage URL of the package or project
type: DatatypeProperty
domain: Package
range: anyURI

Distribution
subclass of: Thing
type: Class
IAO_0000115: A complete operating system distribution that packages and distributes software using specific package management systems.
comment: A specific Linux/Unix distribution

Binary Package
comment: A compiled, installable package produced from a source package
type: Class
IAO_0000115: A binary package containing compiled executables, libraries, or architecture-independent files, ready for installation on a target system.
subclass of: Package

release contains
range: Package
inverse of: part of release
domain: Distribution Release
comment: Links a distribution release to packages it contains
type: ObjectProperty
IAO_0000115: Links a distribution release to packages it contains, enabling efficient 'what packages are in this release' queries.

conflicts
comment: Indicates that a package cannot be installed alongside another package (symmetric relationship)
type: SymmetricProperty
type: ObjectProperty
type: IrreflexiveProperty
domain: Package
range: Package
IAO_0000115: A symmetric relationship indicating that two packages cannot be installed simultaneously on the same system due to incompatibilities or resource conflicts. If package A conflicts with package B, then B conflicts with A.

last commit date
comment: The date of the most recent commit to the upstream repository
range: date
domain: Package Identity
type: DatatypeProperty
IAO_0000115: The date of the most recent commit to the upstream repository, indicating active development status.

contributor organization
IAO_0000115: Associates a contributor with the organization they are affiliated with, enabling analysis of contributor diversity and organizational representation in package maintenance.
range: Organization
type: ObjectProperty
domain: Contributor
comment: Links a contributor to their affiliated organization

snapshot timestamp
IAO_0000115: The date and time when the data collection or enrichment run completed.
range: dateTime
comment: When this data snapshot was created.
type: DatatypeProperty
domain: Data Snapshot

build depends on
comment: Indicates a build-time dependency that is required to build the source package but not needed at runtime.
IAO_0000115: A relationship indicating that one package is required to compile or build a source package from its source code, but is not required for the resulting binary packages to function.
domain: Source Package
range: Package
type: ObjectProperty
sub property of: depends on

Publishing Activity
subclass of: Activity
IAO_0000115: An activity that uploads and makes a package available for distribution through a package repository.
type: Class
comment: The process of making a package available in a repository

has package
domain: Package Identity
range: Binary Package
type: ObjectProperty
IAO_0000115: The inverse relationship of isVersionOf, linking a package identity to all versioned binary packages that belong to it. Enables efficient 'list all versions of package X' queries from the identity node.
comment: Links a package identity to its versioned binary package instances.

upstream equivalent
comment: This package identity is equivalent to another package identity from a different ecosystem
domain: Package Identity
type: SymmetricProperty
IAO_0000115: Symmetric relationship between package identities from different ecosystems that represent the same software (e.g., Debian python3-requests ↔ PyPI requests). Enables bidirectional cross-ecosystem identity queries.
type: ObjectProperty
range: Package Identity

has dependency
type: ObjectProperty
comment: Links a package to a reified dependency relationship with version constraints. The directlyDependsOn property provides a materialized shortcut (via owl:propertyChainAxiom) for simpler traversal.
domain: Package
range: Dependency
IAO_0000115: Associates a package with a structured dependency that captures the target package, version constraints, and dependency type. Detailed dependency with type and version constraint. The directlyDependsOn shortcut provides a simpler graph traversal path for queries that don't need constraint details.

package size
comment: The size of the package file
type: DatatypeProperty
domain: Package
range: long
IAO_0000115: The size of the package file or archive, measured in bytes, before installation or extraction.

Repository
IAO_0000115: A centralized storage location where software packages are hosted and made available for distribution, typically accessible via network protocols and managed by package management systems.
type: Class
comment: A storage location for packages, accessible through a package management system
subclass of: Thing
subclass of: Entity

Package Ecosystem
subclass of: Thing
IAO_0000115: A comprehensive package management ecosystem that may span multiple distributions, formats, and repositories, such as the Debian ecosystem including Ubuntu derivatives.
type: Class
comment: A broader ecosystem encompassing multiple distributions and package formats