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

maven:POM a owl:Class ;
    rdfs:label "POM"@en ;
    IAO:0000115 "An XML file (pom.xml) that describes a Maven project's metadata, dependencies, build configuration, and plugins."@en ;
    rdfs:comment "A Maven Project Object Model file"@en ;
    rdfs:isDefinedBy maven: .

maven:artifactId a owl:DatatypeProperty ;
    rdfs:label "artifact ID"@en ;
    IAO:0000115 "The Maven artifactId — the project/library name within the group (e.g., 'commons-lang3')."@en ;
    rdfs:domain maven:MavenArtifact ;
    rdfs:isDefinedBy maven: ;
    rdfs:range xsd:string .

maven:classifier a owl:DatatypeProperty ;
    rdfs:label "classifier"@en ;
    IAO:0000115 "Optional classifier distinguishing artifacts with the same groupId:artifactId:version (e.g., 'javadoc', 'sources', 'tests')."@en ;
    rdfs:domain maven:MavenArtifact ;
    rdfs:isDefinedBy maven: ;
    rdfs:range xsd:string .

maven:compileDependency a owl:ObjectProperty ;
    rdfs:label "compile dependency"@en ;
    IAO:0000115 "A compile-scope dependency available during compilation, testing, and runtime."@en ;
    rdfs:domain maven:MavenArtifact ;
    rdfs:isDefinedBy maven: ;
    rdfs:range maven:MavenArtifact ;
    rdfs:subPropertyOf pkg:dependsOn .

maven:groupId a owl:DatatypeProperty ;
    rdfs:label "group ID"@en ;
    IAO:0000115 "The Maven groupId — typically a reversed domain name identifying the organization (e.g., 'org.apache.commons')."@en ;
    rdfs:domain maven:MavenArtifact ;
    rdfs:isDefinedBy maven: ;
    rdfs:range xsd:string .

maven:inceptionYear a owl:DatatypeProperty ;
    rdfs:label "inception year"@en ;
    IAO:0000115 "The year the project was started, from the POM <inceptionYear> element."@en ;
    rdfs:domain maven:MavenArtifact ;
    rdfs:isDefinedBy maven: ;
    rdfs:range xsd:gYear .

maven:optional a owl:DatatypeProperty ;
    rdfs:label "optional"@en ;
    IAO:0000115 "Whether this dependency is optional (not transitively inherited by dependents)."@en ;
    rdfs:domain pkg:Dependency ;
    rdfs:isDefinedBy maven: ;
    rdfs:range xsd:boolean .

maven:organization a owl:DatatypeProperty ;
    rdfs:label "organization"@en ;
    IAO:0000115 "The organization name from the POM <organization> element."@en ;
    rdfs:comment "Organization from POM <organization> tag (semantically foaf:Organization)"@en ;
    rdfs:domain maven:MavenArtifact ;
    rdfs:isDefinedBy maven: ;
    rdfs:range xsd:string .

maven:packaging a owl:DatatypeProperty ;
    rdfs:label "packaging"@en ;
    IAO:0000115 "The artifact packaging type (e.g., 'jar', 'war', 'pom', 'maven-plugin', 'aar')."@en ;
    rdfs:domain maven:MavenArtifact ;
    rdfs:isDefinedBy maven: ;
    rdfs:range xsd:string .

maven:pomUrl a owl:DatatypeProperty ;
    rdfs:label "POM URL"@en ;
    IAO:0000115 "The URL to the artifact's POM file in the repository."@en ;
    rdfs:domain maven:MavenArtifact ;
    rdfs:isDefinedBy maven: ;
    rdfs:range xsd:anyURI .

maven:providedDependency a owl:ObjectProperty ;
    rdfs:label "provided dependency"@en ;
    IAO:0000115 "A provided-scope dependency expected to be provided by the runtime environment (e.g., servlet-api by a web container)."@en ;
    rdfs:domain maven:MavenArtifact ;
    rdfs:isDefinedBy maven: ;
    rdfs:range maven:MavenArtifact ;
    rdfs:subPropertyOf pkg:recommends .

maven:publishedTo a owl:ObjectProperty ;
    rdfs:label "published to"@en ;
    IAO:0000115 "Associates an artifact with the Maven repository it was published to."@en ;
    rdfs:domain maven:MavenArtifact ;
    rdfs:isDefinedBy maven: ;
    rdfs:range maven:MavenRepository .

maven:runtimeDependency a owl:ObjectProperty ;
    rdfs:label "runtime dependency"@en ;
    IAO:0000115 "A runtime-scope dependency required during execution but not compilation."@en ;
    rdfs:domain maven:MavenArtifact ;
    rdfs:isDefinedBy maven: ;
    rdfs:range maven:MavenArtifact ;
    rdfs:subPropertyOf pkg:dependsOn .

maven:scope a owl:DatatypeProperty ;
    rdfs:label "scope"@en ;
    IAO:0000115 "The Maven dependency scope (compile, provided, runtime, test, system)."@en ;
    rdfs:domain pkg:Dependency ;
    rdfs:isDefinedBy maven: ;
    rdfs:range xsd:string ;
    owl:deprecated true .

maven:systemDependency a owl:ObjectProperty ;
    rdfs:label "system dependency"@en ;
    IAO:0000115 "A system-scope dependency expected to be provided by the JDK or operating system at an explicit filesystem path. Rarely used and generally discouraged in favor of repository-based dependencies."@en ;
    rdfs:domain maven:MavenArtifact ;
    rdfs:isDefinedBy maven: ;
    rdfs:range maven:MavenArtifact ;
    rdfs:subPropertyOf pkg:dependsOn .

maven:testDependency a owl:ObjectProperty ;
    rdfs:label "test dependency"@en ;
    IAO:0000115 "A test-scope dependency required only for compiling and running tests."@en ;
    rdfs:domain maven:MavenArtifact ;
    rdfs:isDefinedBy maven: ;
    rdfs:range maven:MavenArtifact ;
    rdfs:subPropertyOf pkg:buildDependsOn .

maven:MavenRepository a owl:Class ;
    rdfs:label "Maven Repository"@en ;
    IAO:0000115 "A repository serving Maven artifacts, such as Maven Central, JCenter, or a private Nexus/Artifactory instance."@en ;
    rdfs:comment "A Maven artifact repository (Central, JCenter, or private)"@en ;
    rdfs:isDefinedBy maven: ;
    rdfs:subClassOf pkg:Repository .

maven:MavenArtifact a owl:Class ;
    rdfs:label "Maven Artifact"@en ;
    IAO:0000115 "A Java/JVM library or application distributed through Maven Central or other Maven repositories, described by a POM (Project Object Model) file."@en ;
    rdfs:comment "A package published to a Maven repository"@en ;
    rdfs:isDefinedBy maven: ;
    rdfs:subClassOf pkg:BinaryPackage .

maven: a owl:Ontology ;
    rdfs:label "Maven Package Ontology"@en ;
    dcterms:abstract "Models Maven Central artifacts including groupId:artifactId:version coordinates, POM metadata, dependency scopes, classifiers, and repository structure. Instances are dual-typed as both pkg:Package and maven:MavenArtifact." ;
    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 Maven artifacts and the Java/JVM ecosystem"@en ;
    rdfs:isDefinedBy maven: ;
    rdfs:seeAlso <https://purl.org/packagegraph/ontology/maven/shapes> ;
    owl:imports pkg: ;
    owl:priorVersion <https://purl.org/packagegraph/ontology/maven/0.6.0> ;
    owl:versionIRI <https://purl.org/packagegraph/ontology/maven/0.7.0> ;
    owl:versionInfo "0.7.0" .

