@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix ggen: <http://ggen.io/ontology#> .
@prefix ex: <http://example.org/maturity-matrix/level3#> .

# Level 3: Medium Project Ontology (1,000-10,000 triples)
# Demonstrates complex domain model with workspace structure

ex:Workspace a rdfs:Class ;
    rdfs:label "Workspace" ;
    rdfs:comment "Rust workspace container" .

ex:Crate a rdfs:Class ;
    rdfs:label "Crate" ;
    rdfs:comment "Rust crate in workspace" .

ex:Module a rdfs:Class ;
    rdfs:label "Module" ;
    rdfs:comment "Rust module in crate" .

ex:Function a rdfs:Class ;
    rdfs:label "Function" ;
    rdfs:comment "Rust function in module" .

# Workspace properties
ex:workspaceName a rdf:Property ;
    rdfs:domain ex:Workspace ;
    rdfs:range rdfs:Literal ;
    rdfs:label "Workspace Name" .

ex:workspaceCrates a rdf:Property ;
    rdfs:domain ex:Workspace ;
    rdfs:range ex:Crate ;
    rdfs:label "Workspace Crates" .

# Crate properties
ex:crateName a rdf:Property ;
    rdfs:domain ex:Crate ;
    rdfs:range rdfs:Literal ;
    rdfs:label "Crate Name" .

ex:cratePath a rdf:Property ;
    rdfs:domain ex:Crate ;
    rdfs:range rdfs:Literal ;
    rdfs:label "Crate Path" .

ex:crateModules a rdf:Property ;
    rdfs:domain ex:Crate ;
    rdfs:range ex:Module ;
    rdfs:label "Crate Modules" .

ex:crateDependencies a rdf:Property ;
    rdfs:domain ex:Crate ;
    rdfs:range rdfs:Literal ;
    rdfs:label "Crate Dependencies" .

# Module properties
ex:moduleName a rdf:Property ;
    rdfs:domain ex:Module ;
    rdfs:range rdfs:Literal ;
    rdfs:label "Module Name" .

ex:modulePath a rdf:Property ;
    rdfs:domain ex:Module ;
    rdfs:range rdfs:Literal ;
    rdfs:label "Module Path" .

ex:moduleFunctions a rdf:Property ;
    rdfs:domain ex:Module ;
    rdfs:range ex:Function ;
    rdfs:label "Module Functions" .

# Function properties
ex:functionName a rdf:Property ;
    rdfs:domain ex:Function ;
    rdfs:range rdfs:Literal ;
    rdfs:label "Function Name" .

ex:functionSignature a rdf:Property ;
    rdfs:domain ex:Function ;
    rdfs:range rdfs:Literal ;
    rdfs:label "Function Signature" .

ex:functionReturnType a rdf:Property ;
    rdfs:domain ex:Function ;
    rdfs:range rdfs:Literal ;
    rdfs:label "Function Return Type" .

