@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .

@prefix vann: <http://purl.org/vocab/vann/> .
@prefix voaf: <http://purl.org/vocommons/voaf#> .
@prefix dce:  <http://purl.org/dc/elements/1.1/> .
@prefix dct:  <http://purl.org/dc/terms/> .
@prefix widoco:	<https://w3id.org/widoco/vocab#>.

@prefix thing: <https://w3id.org/fm/thing#> .
@prefix resource: <https://w3id.org/fm/resource#> .

<https://w3id.org/fm/resource> 
    rdf:type owl:Ontology ;
    vann:preferredNamespaceUri    "https://w3id.org/fm/resource#" ;
    vann:preferredNamespacePrefix "resource" ;
    owl:versionIRI <https://w3id.org/fm/resource/1.0.1>;
    owl:versionInfo "1.0.1" ;
    rdfs:label "The FM Resource Ontology"@en ;
    rdfs:comment "A core ontology for production related Resources"@en;
    dct:created  "2025-11-01"^^xsd:date ;
    dct:modified "2026-09-29"^^xsd:date ;
    dct:issued   "2026-09-29"^^xsd:date ;
    dce:title "The Resource Ontology"@en ;
    dct:license <https://creativecommons.org/licenses/by/4.0/>;
    dct:subject "top"@en;

    dce:abstract '''
The core Resource Ontology for production related concepts. A Resource is an asset used with some availability, possibly changing in time. Activities like Production Processes use Resources, henceforth reserving their availability.
'''@en;

    widoco:introduction '''
A Resource is an asset used with some availability, possibly changing in time. 

Activities like Production Processes use Resources, henceforth reserving their availability.

Examples are:
- forever Resources as geographical areas
- long living Resources as buildings
- living Resources as man power
- fabricated Resources as machines and vehicles
'''@en;

    dce:description '''
Resources inherit from Thing:
- the ResourceDefinition concept: allowing to capture commonalities between entities
- the hierarchy in subEntities and subDefinitions

Concepts:
- a `resource:Entity` is an actual Resource, existing on the workfloor
- a `resource:SubEntity` is a part or component of the resource:Entity
  - a reference to the resource:Entity belonging to the parent resource:Entity
  - additional information related to the child Entity in the context of the parent Entity:
    - position of the component relative to the parent Entity
    - role of the component (e.g. rear left wheel)
  - basically, it is the reified relationship `hasSubEntity`between assembly and component
    - is optional, as long as the `hasSubEntity` association is sufficient
- a `resource:Definition` captures commonalities between Entities
  - a CAD design
  - information to the make of the Resource


```mermaid
classDiagram
    class ResourceEntity  
    class ResourceDefinition:::definition 
    class ResourceSubDefinition:::definition 

    ResourceEntity o-- ResourceSubEntity: subEntity
    ResourceDefinition o-- ResourceSubDefinition: subDefinition
    ResourceDefinition --|> ResourceEntity
    ResourceDefinition --> ResourceDefinition: hasSubDefinition
    ResourceSubDefinition --|> ResourceSubEntity
    ResourceEntity --> ResourceDefinition : entityDefinition
    ResourceEntity --> ResourceEntity : hasSubEntity
    ResourceSubEntity --> ResourceEntity : subEntityEntity
    ResourceSubDefinition --> ResourceDefinition : subDefinitionDefinition
    ResourceSubEntity --> ResourceSubDefinition : subEntityDefinition

    classDef default fill:#f96,color:black
    classDef definition fill:#e9edc9,color:black
```
'''@en.  


# entities
resource:Entity
    rdf:type owl:Class;
    rdfs:subClassOf thing:Entity;
    rdfs:comment '''A Resource is something used by some activity, like a production process. 
The Resource is not consumed by the activity, and can be used subsequently used by other activities'''@en.

resource:SubEntity
    rdf:type owl:Class;
    rdfs:subClassOf thing:SubEntity.

resource:subEntity
    rdf:type owl:ObjectProperty;
    rdfs:domain resource:Entity;
    rdfs:range resource:SubEntity.

resource:subEntityEntity
    rdf:type owl:ObjectProperty;
    rdfs:subPropertyOf thing:subEntityEntity;
    rdf:type owl:FunctionalProperty;
    rdfs:domain resource:SubEntity;
    rdfs:range resource:Entity.

resource:hasSubEntity
    rdf:type owl:ObjectProperty;
    rdfs:subPropertyOf thing:hasSubEntity;
    rdfs:domain resource:Entity;
    rdfs:range resource:Entity;
    owl:propertyChainAxiom (
         resource:subEntity 
         resource:subEntityEntity
    ).

# definitions
resource:entityDefinition 
    rdf:type owl:ObjectProperty;
    rdfs:subPropertyOf thing:entityDefinition;
    rdfs:domain resource:Entity;
    rdfs:range resource:Definition.

resource:Definition
    rdf:type owl:Class;
    rdfs:subClassOf resource:Entity;
    rdfs:subClassOf thing:Definition.

resource:subEntityDefinition 
    rdf:type owl:ObjectProperty;
    rdfs:subPropertyOf thing:subEntityDefinition;
    rdfs:domain resource:SubEntity;
    rdfs:range resource:SubDefinition.

resource:SubDefinition
    rdf:type owl:Class;
    rdfs:subClassOf resource:SubEntity;
    rdfs:subClassOf thing:SubDefinition.

resource:subDefinition
    rdf:type owl:ObjectProperty;
    rdfs:subPropertyOf thing:subDefinition;
    rdfs:domain resource:Definition;
    rdfs:range resource:SubDefinition.

resource:subDefinitionDefinition
    rdf:type owl:ObjectProperty;
    rdfs:subPropertyOf thing:subDefinitionDefinition;
    rdf:type owl:FunctionalProperty;
    rdfs:domain resource:SubDefinition;
    rdfs:range resource:Definition.

resource:hasSubDefinition
    rdf:type owl:ObjectProperty;
    rdfs:subPropertyOf thing:hasSubDefinition;
    rdfs:domain resource:Definition;
    rdfs:range resource:Definition;
    owl:propertyChainAxiom (
         resource:subDefinition 
         resource:subDefinitionDefinition
    ).


# Serialization annotations added by generate_docs.py
<https://w3id.org/fm/resource>
    <https://w3id.org/widoco/vocab#turtleSerialization> "resource.ttl" ;
    <https://w3id.org/widoco/vocab#rdfxmlSerialization> "resource.rdf" ;
    <https://w3id.org/widoco/vocab#ntSerialization> "resource.nt" ;
    <https://w3id.org/widoco/vocab#jsonldSerialization> "resource.jsonld" .
