@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 vcs: <https://purl.org/packagegraph/ontology/vcs#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

vcs:Bazaar a owl:NamedIndividual ;
    rdfs:label "Bazaar"@en ;
    rdfs:comment "Bazaar version control system"@en .

vcs:Bitbucket a owl:NamedIndividual ;
    rdfs:label "Bitbucket"@en ;
    rdfs:comment "Bitbucket hosting platform"@en .

vcs:CVS a owl:NamedIndividual ;
    rdfs:label "CVS"@en ;
    rdfs:comment "Concurrent Versions System"@en .

vcs:Codeberg a owl:NamedIndividual ;
    rdfs:label "Codeberg"@en ;
    rdfs:comment "Codeberg hosting platform"@en .

vcs:Diff a owl:Class ;
    rdfs:label "Diff"@en ;
    IAO:0000115 "A representation of the differences between two versions of files or commits, showing additions, deletions, and modifications in a structured format."@en ;
    rdfs:comment "A diff or patch between two versions of files"@en ;
    rdfs:isDefinedBy vcs: ;
    rdfs:subClassOf owl:Thing .

vcs:Fossil a owl:NamedIndividual ;
    rdfs:label "Fossil"@en ;
    rdfs:comment "Fossil distributed version control system"@en .

vcs:Git a owl:NamedIndividual ;
    rdfs:label "Git"@en ;
    rdfs:comment "Git version control system"@en .

vcs:GitHub a owl:NamedIndividual ;
    rdfs:label "GitHub"@en ;
    rdfs:comment "GitHub hosting platform"@en .

vcs:GitLab a owl:NamedIndividual ;
    rdfs:label "GitLab"@en ;
    rdfs:comment "GitLab hosting platform"@en .

vcs:Issue a owl:Class ;
    rdfs:label "Issue"@en ;
    IAO:0000115 "A tracked item representing a bug report, feature request, or other task associated with a software project repository."@en ;
    rdfs:comment "An issue or bug report in a repository"@en ;
    rdfs:isDefinedBy vcs: ;
    rdfs:subClassOf owl:Thing .

vcs:Mercurial a owl:NamedIndividual ;
    rdfs:label "Mercurial"@en ;
    rdfs:comment "Mercurial version control system"@en .

vcs:PullRequest a owl:Class ;
    rdfs:label "Pull Request"@en ;
    IAO:0000115 "A request to merge changes from one branch into another, typically used for code review and collaborative development workflows."@en ;
    rdfs:comment "A pull/merge request for code changes"@en ;
    rdfs:isDefinedBy vcs: ;
    rdfs:subClassOf prov:Activity .

vcs:ReleaseCandidate a owl:Class ;
    rdfs:label "Release Candidate"@en ;
    IAO:0000115 "A version tagged as a candidate for release, used for final testing before the official release."@en ;
    rdfs:comment "A pre-release version for testing"@en ;
    rdfs:isDefinedBy vcs: ;
    rdfs:subClassOf vcs:Release .

vcs:Savannah a owl:NamedIndividual ;
    rdfs:label "GNU Savannah"@en ;
    rdfs:comment "GNU Savannah hosting platform"@en .

vcs:SourceHut a owl:NamedIndividual ;
    rdfs:label "SourceHut"@en ;
    rdfs:comment "SourceHut hosting platform"@en .

vcs:Subversion a owl:NamedIndividual ;
    rdfs:label "Subversion"@en ;
    rdfs:comment "Apache Subversion version control system"@en .

vcs:addedFile a owl:ObjectProperty ;
    rdfs:label "added file"@en ;
    IAO:0000115 "Indicates files that were newly created and added to the repository in this commit."@en ;
    rdfs:comment "Files added in this commit"@en ;
    rdfs:isDefinedBy vcs: ;
    rdfs:subPropertyOf vcs:affectsFile .

vcs:authorTimestamp a owl:DatatypeProperty ;
    rdfs:label "author timestamp"@en ;
    IAO:0000115 "The date and time when the changes in the commit were originally authored, which may differ from the commit timestamp."@en ;
    rdfs:comment "Timestamp when the changes were authored"@en ;
    rdfs:domain vcs:Commit ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:dateTime .

vcs:authoredBy a owl:ObjectProperty ;
    rdfs:label "authored by"@en ;
    IAO:0000115 "Identifies the person who originally wrote the changes contained in the commit."@en ;
    rdfs:comment "Person who authored the commit"@en ;
    rdfs:domain vcs:Commit ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range pkg:Contributor ;
    rdfs:subPropertyOf prov:wasAttributedTo .

vcs:cloneUrl a owl:DatatypeProperty ;
    rdfs:label "clone URL"@en ;
    IAO:0000115 "The URL that can be used to create a local copy of the repository using version control tools."@en ;
    rdfs:comment "URL for cloning the repository"@en ;
    rdfs:domain vcs:Repository ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:anyURI .

vcs:commitFrequency a owl:DatatypeProperty ;
    rdfs:label "commit frequency"@en ;
    IAO:0000115 "The average number of commits per day over a recent time period, indicating development activity level."@en ;
    rdfs:comment "Average commits per day over recent period"@en ;
    rdfs:domain vcs:Repository ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:float .

vcs:commitMessage a owl:DatatypeProperty ;
    rdfs:label "commit message"@en ;
    IAO:0000115 "A human-readable description of the changes made in the commit, typically including a summary and optional detailed explanation."@en ;
    rdfs:comment "Commit message describing the changes"@en ;
    rdfs:domain vcs:Commit ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:string .

vcs:committedBy a owl:ObjectProperty ;
    rdfs:label "committed by"@en ;
    IAO:0000115 "Identifies the person who applied the changes to the repository, which may differ from the original author."@en ;
    rdfs:comment "Person who committed the changes"@en ;
    rdfs:domain vcs:Commit ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range pkg:Contributor ;
    rdfs:subPropertyOf prov:wasAttributedTo .

vcs:contributorCount a owl:DatatypeProperty ;
    rdfs:label "contributor count"@en ;
    IAO:0000115 "The total number of unique contributors who have made commits to the repository."@en ;
    rdfs:comment "Number of unique contributors"@en ;
    rdfs:domain vcs:Repository ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:int .

vcs:correspondingPackageVersion a owl:ObjectProperty ;
    rdfs:label "corresponding package version"@en ;
    IAO:0000115 "Associates a VCS release with the package version that was built from this release."@en ;
    rdfs:comment "Links a VCS release to the corresponding package version"@en ;
    rdfs:domain vcs:Release ;
    rdfs:isDefinedBy vcs: .

vcs:deletedFile a owl:ObjectProperty ;
    rdfs:label "deleted file"@en ;
    IAO:0000115 "Indicates files that were removed from the repository in this commit."@en ;
    rdfs:comment "Files deleted in this commit"@en ;
    rdfs:isDefinedBy vcs: ;
    rdfs:subPropertyOf vcs:affectsFile .

vcs:developmentStatus a owl:DatatypeProperty ;
    rdfs:label "development status"@en ;
    IAO:0000115 "Indicates the current development status such as active, maintenance, archived, or deprecated."@en ;
    rdfs:comment "Current development status of the repository"@en ;
    rdfs:domain vcs:Repository ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:string .

vcs:encoding a owl:DatatypeProperty ;
    rdfs:label "encoding"@en ;
    IAO:0000115 "The character encoding format used for the file content, such as UTF-8, ASCII, or ISO-8859-1."@en ;
    rdfs:comment "Character encoding of the file"@en ;
    rdfs:domain vcs:File ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:string .

vcs:fileHash a owl:DatatypeProperty ;
    rdfs:label "file hash"@en ;
    IAO:0000115 "A cryptographic hash of the file's content used for integrity verification and change detection."@en ;
    rdfs:comment "Content hash of the file"@en ;
    rdfs:domain vcs:File ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:string .

vcs:filePath a owl:DatatypeProperty ;
    rdfs:label "file path"@en ;
    IAO:0000115 "The relative path and filename of the file within the repository's directory structure."@en ;
    rdfs:comment "Path of the file within the repository"@en ;
    rdfs:domain vcs:File ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:string .

vcs:fileSize a owl:DatatypeProperty ;
    rdfs:label "file size"@en ;
    IAO:0000115 "The size of the file content measured in bytes."@en ;
    rdfs:comment "Size of the file in bytes"@en ;
    rdfs:domain vcs:File ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:long .

vcs:firstCommitDate a owl:DatatypeProperty,
        owl:FunctionalProperty ;
    rdfs:label "first commit date"@en ;
    IAO:0000115 "The date of the earliest commit in the repository, establishing the project's age."@en ;
    rdfs:comment "Date of the earliest commit in the repository"@en ;
    rdfs:domain vcs:Repository ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:dateTime .

vcs:forkCount a owl:DatatypeProperty ;
    rdfs:label "fork count"@en ;
    IAO:0000115 "The number of forks created from the repository, indicating derivative development activity."@en ;
    rdfs:comment "Number of forks created from the repository"@en ;
    rdfs:domain vcs:Repository ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:int .

vcs:hasBranch a owl:ObjectProperty ;
    rdfs:label "has branch"@en ;
    IAO:0000115 "Associates a repository with the branches it contains."@en ;
    rdfs:comment "Links repository to branches"@en ;
    rdfs:domain vcs:Repository ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range vcs:Branch .

vcs:hasCommit a owl:ObjectProperty ;
    rdfs:label "has commit"@en ;
    IAO:0000115 "Associates a repository or branch with the commits it contains."@en ;
    rdfs:comment "Links repository or branch to commits"@en ;
    rdfs:domain vcs:Repository ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range vcs:Commit .

vcs:hasFile a owl:ObjectProperty ;
    rdfs:label "has file"@en ;
    IAO:0000115 "Associates a commit or repository with the files it contains or affects."@en ;
    rdfs:comment "Links commit or repository to files"@en ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range vcs:File .

vcs:hasPackage a owl:ObjectProperty ;
    rdfs:label "has package"@en ;
    IAO:0000115 "The inverse relationship of pkg:upstreamRepository, linking a VCS repository to the package identities that use it as their upstream source. Enables efficient 'what packages come from this repository' queries."@en ;
    rdfs:comment "Links a repository to the packages that are built from it"@en ;
    rdfs:domain vcs:Repository ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range pkg:PackageIdentity ;
    owl:inverseOf pkg:upstreamRepository .

vcs:hasReleaseNotes a owl:ObjectProperty ;
    rdfs:label "has release notes"@en ;
    IAO:0000115 "Associates a release with its accompanying release notes or changelog documentation."@en ;
    rdfs:comment "Links a release to its documentation"@en ;
    rdfs:domain vcs:Release ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range vcs:ReleaseNotes .

vcs:hasTag a owl:ObjectProperty ;
    rdfs:label "has tag"@en ;
    IAO:0000115 "Associates a repository with the tags it contains."@en ;
    rdfs:comment "Links repository to tags"@en ;
    rdfs:domain vcs:Repository ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range vcs:Tag .

vcs:hasTarget a owl:ObjectProperty ;
    rdfs:label "has target"@en ;
    IAO:0000115 "Associates a development milestone with its target release."@en ;
    rdfs:comment "Links milestone to target release"@en ;
    rdfs:domain vcs:Milestone ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range vcs:Release .

vcs:hasUpstreamRepository a owl:ObjectProperty ;
    rdfs:label "has upstream repository"@en ;
    IAO:0000115 "Associates an upstream project or package with the version control repository where its source code is maintained."@en ;
    rdfs:comment "Links an upstream project or package to its source repository"@en ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range vcs:Repository .

vcs:isAnnotated a owl:DatatypeProperty ;
    rdfs:label "is annotated"@en ;
    IAO:0000115 "Indicates whether the tag includes additional metadata such as a message, tagger information, and timestamp."@en ;
    rdfs:comment "Whether the tag is annotated"@en ;
    rdfs:domain vcs:Tag ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:boolean .

vcs:isPreRelease a owl:DatatypeProperty ;
    rdfs:label "is pre-release"@en ;
    IAO:0000115 "Indicates whether this release is a pre-release, alpha, beta, or release candidate rather than a stable release."@en ;
    rdfs:comment "Whether this is a pre-release version"@en ;
    rdfs:domain vcs:Release ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:boolean .

vcs:isProtected a owl:DatatypeProperty ;
    rdfs:label "is protected"@en ;
    IAO:0000115 "Indicates whether the branch has protection rules that prevent direct pushes and require pull requests or other approval processes."@en ;
    rdfs:comment "Whether the branch is protected from direct pushes"@en ;
    rdfs:domain vcs:Branch ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:boolean .

vcs:isSignedRelease a owl:DatatypeProperty ;
    rdfs:label "is signed release"@en ;
    IAO:0000115 "Indicates whether the release has been cryptographically signed for integrity verification."@en ;
    rdfs:comment "Whether the release is cryptographically signed"@en ;
    rdfs:domain vcs:Release ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:boolean .

vcs:issuesClosedLastMonth a owl:DatatypeProperty ;
    rdfs:label "issues closed last month"@en ;
    IAO:0000115 "The number of issues closed in the repository during the last calendar month."@en ;
    rdfs:comment "Number of issues closed during the last calendar month"@en ;
    rdfs:domain vcs:Repository ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:int .

vcs:issuesClosedLastYear a owl:DatatypeProperty ;
    rdfs:label "issues closed last year"@en ;
    IAO:0000115 "The number of issues closed in the repository during the last calendar year."@en ;
    rdfs:comment "Number of issues closed during the last calendar year"@en ;
    rdfs:domain vcs:Repository ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:int .

vcs:issuesOpenedLastMonth a owl:DatatypeProperty ;
    rdfs:label "issues opened last month"@en ;
    IAO:0000115 "The number of issues opened in the repository during the last calendar month."@en ;
    rdfs:comment "Number of issues opened during the last calendar month"@en ;
    rdfs:domain vcs:Repository ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:int .

vcs:issuesOpenedLastYear a owl:DatatypeProperty ;
    rdfs:label "issues opened last year"@en ;
    IAO:0000115 "The number of issues opened in the repository during the last calendar year."@en ;
    rdfs:comment "Number of issues opened during the last calendar year"@en ;
    rdfs:domain vcs:Repository ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:int .

vcs:lastActivity a owl:DatatypeProperty ;
    rdfs:label "last activity"@en ;
    IAO:0000115 "The date and time of the most recent commit or activity in the repository."@en ;
    rdfs:comment "Date of last commit or activity"@en ;
    rdfs:domain vcs:Repository ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:dateTime .

vcs:milestoneProgress a owl:DatatypeProperty ;
    rdfs:label "milestone progress"@en ;
    IAO:0000115 "The current completion progress of a milestone as a decimal value between 0.0 and 1.0."@en ;
    rdfs:comment "Completion percentage of milestone (0.0 to 1.0)"@en ;
    rdfs:domain vcs:Milestone ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:float .

vcs:mimeType a owl:DatatypeProperty ;
    rdfs:label "MIME type"@en ;
    IAO:0000115 "The MIME type that identifies the format and nature of the file content."@en ;
    rdfs:comment "MIME type of the file"@en ;
    rdfs:domain vcs:File ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:string .

vcs:modifiedFile a owl:ObjectProperty ;
    rdfs:label "modified file"@en ;
    IAO:0000115 "Indicates files that had their content changed in this commit."@en ;
    rdfs:comment "Files modified in this commit"@en ;
    rdfs:isDefinedBy vcs: ;
    rdfs:subPropertyOf vcs:affectsFile .

vcs:nextRelease a owl:ObjectProperty ;
    rdfs:label "next release"@en ;
    IAO:0000115 "Identifies the next release in the chronological sequence of releases."@en ;
    rdfs:comment "Links to the next release in sequence"@en ;
    rdfs:domain vcs:Release ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range vcs:Release ;
    owl:inverseOf vcs:previousRelease .

vcs:openIssueCount a owl:DatatypeProperty ;
    rdfs:label "open issue count"@en ;
    IAO:0000115 "The current number of open issues in the repository."@en ;
    rdfs:comment "Current number of open issues"@en ;
    rdfs:domain vcs:Repository ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:int .

vcs:packagedFromCommit a owl:ObjectProperty ;
    rdfs:label "packaged from commit"@en ;
    IAO:0000115 "Associates a package with the specific commit from which it was built."@en ;
    rdfs:comment "Indicates which commit a package was built from"@en ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range vcs:Commit ;
    rdfs:subPropertyOf prov:wasDerivedFrom .

vcs:packagedFromTag a owl:ObjectProperty ;
    rdfs:label "packaged from tag"@en ;
    IAO:0000115 "Associates a package with the specific VCS tag or release from which it was built."@en ;
    rdfs:comment "Indicates which VCS tag a package was built from"@en ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range vcs:Tag ;
    rdfs:subPropertyOf prov:wasDerivedFrom .

vcs:parentCommit a owl:ObjectProperty ;
    rdfs:label "parent commit"@en ;
    IAO:0000115 "Identifies the preceding commit(s) in the repository history from which this commit was derived."@en ;
    rdfs:comment "Parent commit(s) of this commit"@en ;
    rdfs:domain vcs:Commit ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range vcs:Commit ;
    rdfs:subPropertyOf prov:wasDerivedFrom .

vcs:pointsTo a owl:ObjectProperty ;
    rdfs:label "points to"@en ;
    IAO:0000115 "Indicates that a reference or tag points to a specific commit in the repository."@en ;
    rdfs:comment "Reference or tag points to a commit"@en ;
    rdfs:domain vcs:Reference ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range vcs:Commit .

vcs:prsClosedLastMonth a owl:DatatypeProperty ;
    rdfs:label "PRs closed last month"@en ;
    IAO:0000115 "The number of pull requests closed or merged in the repository during the last calendar month."@en ;
    rdfs:comment "Number of pull requests closed or merged during the last calendar month"@en ;
    rdfs:domain vcs:Repository ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:int .

vcs:prsClosedLastYear a owl:DatatypeProperty ;
    rdfs:label "PRs closed last year"@en ;
    IAO:0000115 "The number of pull requests closed or merged in the repository during the last calendar year."@en ;
    rdfs:comment "Number of pull requests closed or merged during the last calendar year"@en ;
    rdfs:domain vcs:Repository ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:int .

vcs:prsOpenedLastMonth a owl:DatatypeProperty ;
    rdfs:label "PRs opened last month"@en ;
    IAO:0000115 "The number of pull requests opened in the repository during the last calendar month."@en ;
    rdfs:comment "Number of pull requests opened during the last calendar month"@en ;
    rdfs:domain vcs:Repository ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:int .

vcs:prsOpenedLastYear a owl:DatatypeProperty ;
    rdfs:label "PRs opened last year"@en ;
    IAO:0000115 "The number of pull requests opened in the repository during the last calendar year."@en ;
    rdfs:comment "Number of pull requests opened during the last calendar year"@en ;
    rdfs:domain vcs:Repository ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:int .

vcs:releaseDate a owl:DatatypeProperty ;
    rdfs:label "release date"@en ;
    IAO:0000115 "The date and time when a release was officially published or made available."@en ;
    rdfs:comment "The date when a release was published"@en ;
    rdfs:domain vcs:Release ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:dateTime .

vcs:releaseFrequency a owl:DatatypeProperty ;
    rdfs:label "release frequency"@en ;
    IAO:0000115 "The average number of days between releases for this repository."@en ;
    rdfs:comment "The typical frequency of releases (in days)"@en ;
    rdfs:domain vcs:Repository ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:int .

vcs:releaseStability a owl:DatatypeProperty ;
    rdfs:label "release stability"@en ;
    IAO:0000115 "Indicates the stability level of the release, such as alpha, beta, release candidate, or stable."@en ;
    rdfs:comment "The stability level of the release (alpha, beta, rc, stable)"@en ;
    rdfs:domain vcs:Release ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:string .

vcs:releasedBy a owl:ObjectProperty ;
    rdfs:label "released by"@en ;
    IAO:0000115 "Identifies the person or organization responsible for publishing and announcing the release."@en ;
    rdfs:comment "Person or organization who published the release"@en ;
    rdfs:domain vcs:Release ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range pkg:Contributor ;
    rdfs:subPropertyOf prov:wasAttributedTo .

vcs:remoteUrl a owl:DatatypeProperty ;
    rdfs:label "remote URL"@en ;
    IAO:0000115 "The URL of a remote repository that this repository is connected to for synchronization purposes."@en ;
    rdfs:comment "URL of the remote repository"@en ;
    rdfs:domain vcs:Repository ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:anyURI .

vcs:renamedFile a owl:ObjectProperty ;
    rdfs:label "renamed file"@en ;
    IAO:0000115 "Indicates files that were moved or renamed in this commit."@en ;
    rdfs:comment "Files renamed in this commit"@en ;
    rdfs:isDefinedBy vcs: ;
    rdfs:subPropertyOf vcs:affectsFile .

vcs:signatureAlgorithm a owl:DatatypeProperty ;
    rdfs:label "signature algorithm"@en ;
    IAO:0000115 "The cryptographic algorithm used to create the release signature."@en ;
    rdfs:comment "The cryptographic algorithm used for signing"@en ;
    rdfs:domain vcs:Release ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:string .

vcs:signatureKeyId a owl:DatatypeProperty ;
    rdfs:label "signature key ID"@en ;
    IAO:0000115 "The identifier of the cryptographic key used to sign the release."@en ;
    rdfs:comment "The key ID used to sign the release"@en ;
    rdfs:domain vcs:Release ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:string .

vcs:stargazerCount a owl:DatatypeProperty ;
    rdfs:label "stargazer count"@en ;
    IAO:0000115 "The number of users who have starred or bookmarked the repository, indicating community interest."@en ;
    rdfs:comment "Number of users who have starred the repository"@en ;
    rdfs:domain vcs:Repository ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:int .

vcs:subscriberCount a owl:DatatypeProperty ;
    rdfs:label "subscriber count"@en ;
    IAO:0000115 "The number of users watching or subscribed to the repository for notifications."@en ;
    rdfs:comment "Number of users watching or subscribed to the repository"@en ;
    rdfs:domain vcs:Repository ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:int .

vcs:tagMessage a owl:DatatypeProperty ;
    rdfs:label "tag message"@en ;
    IAO:0000115 "A human-readable message describing the purpose or significance of the tag, typically used for release notes."@en ;
    rdfs:comment "Message associated with the tag"@en ;
    rdfs:domain vcs:Tag ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:string .

vcs:targetDate a owl:DatatypeProperty ;
    rdfs:label "target date"@en ;
    IAO:0000115 "The planned or target completion date for a milestone or release."@en ;
    rdfs:comment "Target completion date for milestone"@en ;
    rdfs:domain vcs:Milestone ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:dateTime .

vcs:totalCommits a owl:DatatypeProperty ;
    rdfs:label "total commits"@en ;
    IAO:0000115 "The total number of commits made to the repository throughout its history."@en ;
    rdfs:comment "Total number of commits in repository"@en ;
    rdfs:domain vcs:Repository ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:int .

vcs:vcsType a owl:DatatypeProperty ;
    rdfs:label "VCS type"@en ;
    IAO:0000115 "Identifies the type of version control system used by the repository, such as Git, Subversion, or Mercurial."@en ;
    rdfs:comment "Type of version control system (git, svn, hg, bzr, etc.)"@en ;
    rdfs:domain vcs:Repository ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:string .

vcs:Reference a owl:Class ;
    rdfs:label "VCS Reference"@en ;
    IAO:0000115 "A named pointer to a specific commit or object in a version control system, such as HEAD, branch references, or remote tracking branches."@en ;
    rdfs:comment "A generic reference in version control (HEAD, refs, etc.)"@en ;
    rdfs:isDefinedBy vcs: ;
    rdfs:subClassOf prov:Entity .

vcs:ReleaseNotes a owl:Class ;
    rdfs:label "Release Notes"@en ;
    IAO:0000115 "Documentation that describes the changes, bug fixes, and new features included in a software release."@en ;
    rdfs:comment "Documentation describing changes in a release"@en ;
    rdfs:isDefinedBy vcs: ;
    rdfs:subClassOf owl:Thing .

vcs:branchName a owl:DatatypeProperty,
        owl:FunctionalProperty ;
    rdfs:label "branch name"@en ;
    IAO:0000115 "The human-readable name identifier of a branch in the version control repository."@en ;
    rdfs:comment "Name of the branch"@en ;
    rdfs:domain vcs:Branch ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:string .

vcs:commitHash a owl:DatatypeProperty,
        owl:FunctionalProperty ;
    rdfs:label "commit hash"@en ;
    IAO:0000115 "The cryptographic hash that uniquely identifies a commit in the version control system."@en ;
    rdfs:comment "Hash identifier of the commit (SHA1, SHA256, etc.)"@en ;
    rdfs:domain vcs:Commit ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:string .

vcs:commitTimestamp a owl:DatatypeProperty,
        owl:FunctionalProperty ;
    rdfs:label "commit timestamp"@en ;
    IAO:0000115 "The date and time when the commit was created and added to the repository."@en ;
    rdfs:comment "Timestamp when the commit was created"@en ;
    rdfs:domain vcs:Commit ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:dateTime .

vcs:defaultBranch a owl:DatatypeProperty,
        owl:FunctionalProperty ;
    rdfs:label "default branch"@en ;
    IAO:0000115 "The name of the primary branch that serves as the default when cloning or accessing the repository."@en ;
    rdfs:comment "Name of the default branch"@en ;
    rdfs:domain vcs:Repository ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:string .

vcs:previousRelease a owl:ObjectProperty ;
    rdfs:label "previous release"@en ;
    IAO:0000115 "Identifies the previous release in the chronological sequence of releases."@en ;
    rdfs:comment "Links to the previous release in sequence"@en ;
    rdfs:domain vcs:Release ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range vcs:Release ;
    rdfs:subPropertyOf prov:wasDerivedFrom .

vcs:tagName a owl:DatatypeProperty,
        owl:FunctionalProperty ;
    rdfs:label "tag name"@en ;
    IAO:0000115 "The human-readable name identifier of a tag in the version control repository."@en ;
    rdfs:comment "Name of the tag"@en ;
    rdfs:domain vcs:Tag ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range xsd:string .

vcs:Branch a owl:Class ;
    rdfs:label "Branch"@en ;
    IAO:0000115 "A parallel line of development in a version control repository that allows developers to work on features or fixes independently from the main codebase."@en ;
    rdfs:comment "A branch in a version control repository"@en ;
    rdfs:isDefinedBy vcs: ;
    rdfs:subClassOf [ a owl:Restriction ;
            owl:cardinality 1 ;
            owl:onProperty vcs:branchName ],
        prov:Entity .

vcs:Milestone a owl:Class ;
    rdfs:label "Milestone"@en ;
    IAO:0000115 "A significant point in the development timeline marking the completion of specific features or goals."@en ;
    rdfs:comment "A development milestone or sprint"@en ;
    rdfs:isDefinedBy vcs: ;
    rdfs:subClassOf prov:Entity .

vcs:affectsFile a owl:ObjectProperty ;
    rdfs:label "affects file"@en ;
    IAO:0000115 "Indicates that a commit modifies, adds, deletes, or otherwise affects the specified file."@en ;
    rdfs:comment "Commit affects these files"@en ;
    rdfs:domain vcs:Commit ;
    rdfs:isDefinedBy vcs: ;
    rdfs:range vcs:File .

vcs:Tag a owl:Class ;
    rdfs:label "Tag"@en ;
    IAO:0000115 "A named reference pointing to a specific commit, typically used to mark release points or important milestones in a project's history."@en ;
    rdfs:comment "A tag pointing to a specific commit or release"@en ;
    rdfs:isDefinedBy vcs: ;
    rdfs:subClassOf [ a owl:Restriction ;
            owl:cardinality 1 ;
            owl:onProperty vcs:tagName ],
        prov:Entity .

vcs:File a owl:Class ;
    rdfs:label "File"@en ;
    IAO:0000115 "A file contained within a version control repository, including source code, documentation, configuration files, and other project assets."@en ;
    rdfs:comment "A file in a repository or package"@en ;
    rdfs:isDefinedBy vcs: ;
    rdfs:subClassOf prov:Entity .

vcs:Commit a owl:Class ;
    rdfs:label "Commit"@en ;
    IAO:0000115 "A snapshot of changes to files in a version control repository, representing a specific point in the project's history with associated metadata such as author, timestamp, and message."@en ;
    rdfs:comment "A commit in a version control system"@en ;
    rdfs:isDefinedBy vcs: ;
    rdfs:subClassOf [ a owl:Restriction ;
            owl:cardinality 1 ;
            owl:onProperty vcs:commitHash ],
        [ a owl:Restriction ;
            owl:cardinality 1 ;
            owl:onProperty vcs:commitTimestamp ],
        prov:Entity .

vcs:Release a owl:Class ;
    rdfs:label "Release"@en ;
    IAO:0000115 "A specific tagged version in version control that represents a formal release of the software, typically corresponding to a published package version."@en ;
    rdfs:comment "A tagged release in version control"@en ;
    rdfs:isDefinedBy vcs: ;
    rdfs:subClassOf vcs:Tag .

vcs:Repository a owl:Class ;
    rdfs:label "Source Code Repository"@en ;
    IAO:0000115 "A version control repository that stores and tracks changes to source code and related project files over time."@en ;
    rdfs:comment "A version control repository containing source code"@en ;
    rdfs:isDefinedBy vcs: ;
    rdfs:subClassOf [ a owl:Restriction ;
            owl:maxCardinality 1 ;
            owl:onProperty vcs:defaultBranch ],
        owl:Thing .

vcs: a owl:Ontology ;
    rdfs:label "Version Control System Ontology"@en ;
    dcterms:abstract "The VCS ontology extends PackageGraph Core to link packages to their upstream source code repositories. It models Git repositories, commits, branches, and tags, enabling queries that trace a binary package back through its source package to the upstream project repository, commit history, and contributors." ;
    dcterms:created "2025-09-05"^^xsd:date ;
    dcterms:creator <https://packagegraph.github.io/> ;
    dcterms:description "A comprehensive ontology for modeling version control systems, source code repositories, commits, branches, tags, and related metadata including file changes, authorship, and repository hosting platforms." ;
    dcterms:license <https://creativecommons.org/publicdomain/zero/1.0/> ;
    dcterms:modified "2026-04-21"^^xsd:date ;
    dcterms:title "Version Control System Ontology" ;
    rdfs:comment "Ontology for representing source code repositories, commits, branches, tags, and version control metadata"@en ;
    rdfs:isDefinedBy vcs: ;
    rdfs:seeAlso <https://purl.org/packagegraph/ontology/vcs/shapes> ;
    owl:imports pkg: ;
    owl:priorVersion <https://purl.org/packagegraph/ontology/vcs/0.6.0> ;
    owl:versionIRI <https://purl.org/packagegraph/ontology/vcs/0.7.0> ;
    owl:versionInfo "0.7.0" .

