@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 rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix rubygems: <https://purl.org/packagegraph/ontology/rubygems#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

rubygems:Platform a owl:Class ;
    rdfs:label "Platform"@en ;
    IAO:0000115 "A platform identifier indicating the Ruby runtime or operating system a gem is compatible with, such as 'ruby' for MRI, 'java' for JRuby, or 'x86_64-linux' for native extensions."@en ;
    rdfs:comment "A target platform for a gem (e.g., ruby, java, x86_64-linux)"@en ;
    rdfs:isDefinedBy rubygems: .

rubygems:authors a owl:DatatypeProperty ;
    rdfs:label "authors"@en ;
    IAO:0000115 "Comma-separated list of gem authors as specified in the gemspec."@en ;
    rdfs:comment "Authors list from gemspec (semantically prov:wasAttributedTo)"@en ;
    rdfs:domain rubygems:Gem ;
    rdfs:isDefinedBy rubygems: ;
    rdfs:range xsd:string .

rubygems:developmentDependency a owl:ObjectProperty ;
    rdfs:label "development dependency"@en ;
    IAO:0000115 "A development dependency required only for gem development and testing, not for runtime use."@en ;
    rdfs:domain rubygems:Gem ;
    rdfs:isDefinedBy rubygems: ;
    rdfs:range rubygems:Gem ;
    rdfs:subPropertyOf pkg:dependsOn .

rubygems:downloads a owl:DatatypeProperty ;
    rdfs:label "downloads"@en ;
    IAO:0000115 "Total number of downloads for this specific gem version."@en ;
    rdfs:domain rubygems:Gem ;
    rdfs:isDefinedBy rubygems: ;
    rdfs:range xsd:integer .

rubygems:gemUri a owl:DatatypeProperty ;
    rdfs:label "gem URI"@en ;
    IAO:0000115 "The download URI for the gem file (.gem)."@en ;
    rdfs:domain rubygems:Gem ;
    rdfs:isDefinedBy rubygems: ;
    rdfs:range xsd:anyURI .

rubygems:platform a owl:DatatypeProperty ;
    rdfs:label "platform"@en ;
    IAO:0000115 "The platform identifier for this gem (e.g., 'ruby', 'java', 'x86_64-linux')."@en ;
    rdfs:domain rubygems:Gem ;
    rdfs:isDefinedBy rubygems: ;
    rdfs:range xsd:string .

rubygems:prerelease a owl:DatatypeProperty ;
    rdfs:label "prerelease"@en ;
    IAO:0000115 "Whether this is a prerelease version (e.g., alpha, beta, rc)."@en ;
    rdfs:domain rubygems:Gem ;
    rdfs:isDefinedBy rubygems: ;
    rdfs:range xsd:boolean .

rubygems:projectUri a owl:DatatypeProperty ;
    rdfs:label "project URI"@en ;
    IAO:0000115 "The project homepage or source repository URI specified in the gemspec."@en ;
    rdfs:domain rubygems:Gem ;
    rdfs:isDefinedBy rubygems: ;
    rdfs:range xsd:anyURI .

rubygems:publishedTo a owl:ObjectProperty ;
    rdfs:label "published to"@en ;
    IAO:0000115 "Associates a gem with the RubyGems registry it was published to."@en ;
    rdfs:domain rubygems:Gem ;
    rdfs:isDefinedBy rubygems: ;
    rdfs:range rubygems:RubyGemsRegistry .

rubygems:requiredRubyVersion a owl:DatatypeProperty ;
    rdfs:label "required ruby version"@en ;
    IAO:0000115 "The Ruby version requirement for this gem, expressed as a RubyGems version constraint (e.g., '>= 2.7.0', '~> 3.0')."@en ;
    rdfs:domain rubygems:Gem ;
    rdfs:isDefinedBy rubygems: ;
    rdfs:range xsd:string .

rubygems:requiredRubygemsVersion a owl:DatatypeProperty ;
    rdfs:label "required rubygems version"@en ;
    IAO:0000115 "The RubyGems version requirement for installing this gem, expressed as a version constraint."@en ;
    rdfs:domain rubygems:Gem ;
    rdfs:isDefinedBy rubygems: ;
    rdfs:range xsd:string .

rubygems:requirementOperator a owl:DatatypeProperty ;
    rdfs:label "requirement operator"@en ;
    IAO:0000115 "The version constraint operator (e.g., '~>', '>=', '!=', '=')."@en ;
    rdfs:domain rubygems:GemRequirement ;
    rdfs:isDefinedBy rubygems: ;
    rdfs:range xsd:string .

rubygems:requirementVersion a owl:DatatypeProperty ;
    rdfs:label "requirement version"@en ;
    IAO:0000115 "The version number in the requirement constraint."@en ;
    rdfs:domain rubygems:GemRequirement ;
    rdfs:isDefinedBy rubygems: ;
    rdfs:range xsd:string .

rubygems:runtimeDependency a owl:ObjectProperty ;
    rdfs:label "runtime dependency"@en ;
    IAO:0000115 "A runtime dependency required when the gem is used."@en ;
    rdfs:domain rubygems:Gem ;
    rdfs:isDefinedBy rubygems: ;
    rdfs:range rubygems:Gem ;
    rdfs:subPropertyOf pkg:dependsOn .

rubygems:sha256 a owl:DatatypeProperty ;
    rdfs:label "SHA-256 checksum"@en ;
    IAO:0000115 "The SHA-256 hash of the gem file, used for integrity verification during installation."@en ;
    rdfs:domain rubygems:Gem ;
    rdfs:isDefinedBy rubygems: ;
    rdfs:range xsd:string .

rubygems:sourceCodeUri a owl:DatatypeProperty ;
    rdfs:label "source code URI"@en ;
    IAO:0000115 "The source code repository URI (often GitHub)."@en ;
    rdfs:domain rubygems:Gem ;
    rdfs:isDefinedBy rubygems: ;
    rdfs:range xsd:anyURI .

rubygems:yanked a owl:DatatypeProperty ;
    rdfs:label "yanked"@en ;
    IAO:0000115 "Whether this gem version has been yanked (removed from general availability but still installable if explicitly referenced)."@en ;
    rdfs:domain rubygems:Gem ;
    rdfs:isDefinedBy rubygems: ;
    rdfs:range xsd:boolean .

rubygems:RubyGemsRegistry a owl:Class ;
    rdfs:label "RubyGems Registry"@en ;
    IAO:0000115 "A package registry serving RubyGems, such as the public rubygems.org registry or a private gem server."@en ;
    rdfs:comment "A RubyGems package registry (rubygems.org or private)"@en ;
    rdfs:isDefinedBy rubygems: ;
    rdfs:subClassOf pkg:Repository .

rubygems:GemRequirement a owl:Class ;
    rdfs:label "Gem Requirement"@en ;
    IAO:0000115 "A version constraint expression using RubyGems requirement syntax (e.g., '~> 2.0', '>= 1.5.0', '!= 3.0.0')."@en ;
    rdfs:comment "A version requirement specification for a gem dependency"@en ;
    rdfs:isDefinedBy rubygems: .

rubygems:Gem a owl:Class ;
    rdfs:label "Gem"@en ;
    IAO:0000115 "A Ruby library or application distributed through the RubyGems package manager, described by a gemspec file."@en ;
    rdfs:comment "A package published to a RubyGems registry"@en ;
    rdfs:isDefinedBy rubygems: ;
    rdfs:subClassOf pkg:SourcePackage .

rubygems: a owl:Ontology ;
    rdfs:label "RubyGems Package Ontology"@en ;
    dcterms:abstract "Models RubyGems registry packages including gem platforms, Ruby version requirements, prerelease versions, and gem dependencies. Instances are dual-typed as both pkg:Package and rubygems:Gem." ;
    dcterms:created "2026-04-14"^^xsd:date ;
    dcterms:license <https://creativecommons.org/publicdomain/zero/1.0/> ;
    dcterms:modified "2026-04-21"^^xsd:date ;
    rdfs:comment "Ontology for representing RubyGems packages and the Ruby ecosystem"@en ;
    rdfs:isDefinedBy rubygems: ;
    rdfs:seeAlso <https://purl.org/packagegraph/ontology/rubygems/shapes> ;
    owl:imports pkg: ;
    owl:priorVersion <https://purl.org/packagegraph/ontology/rubygems/0.6.0> ;
    owl:versionIRI <https://purl.org/packagegraph/ontology/rubygems/0.7.0> ;
    owl:versionInfo "0.7.0" .

