@prefix : <https://www.inf.ufrgs.br/ontologies/odp/functional-location/> .
@prefix fl: <https://www.inf.ufrgs.br/ontologies/odp/functional-location#> .
@prefix bfo: <http://purl.obolibrary.org/obo/BFO_> .
@prefix iao: <http://purl.obolibrary.org/obo/IAO_> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix iof-av: <https://spec.industrialontologies.org/ontology/annotation/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix iof-constr: <https://spec.industrialontologies.org/ontology/construct/> .
@prefix src: <https://www.inf.ufrgs.br/ontologies/odp/functional-location/source-schema#> .
@prefix iof-ind: <https://spec.industrialontologies.org/ontology/individual/> .
@base <https://www.inf.ufrgs.br/ontologies/odp/functional-location/> .

<https://www.inf.ufrgs.br/ontologies/odp/functional-location> rdf:type owl:Ontology ;
                                                               owl:imports <http://purl.obolibrary.org/obo/iao.owl> ,
                                                                           <http://purl.obolibrary.org/obo/bfo/2020/bfo.owl> ,
                                                                           <https://spec.industrialontologies.org/ontology/202602/core/Core/> ;
                                                               dcterms:contributor "Cauã Antunes"@en ,
                                                                                   "Haroldo Rojas"@en ,
                                                                                   "Fabrício Rodrigues"@en ,
                                                                                   "Mara Abel"@en ,
                                                                                   "Rafael Petry"@en ,
                                                                                   "Regis Romeu"@en ;
                                                               dcterms:created "2025-12-17"^^xsd:date ;
                                                               dcterms:creator "Nicolau Santos"@en ;
                                                               dcterms:description "An ontology design pattern for modeling functional locations as persistent spatial sites in industrial asset management systems. The pattern separates five concerns: spatial site (bfo:Site), organizational code (iao:CentrallyRegisteredIdentifier), equipment tag (iao:CentrallyRegisteredIdentifier), functional specification (iao:DirectiveInformationEntity), and installed equipment (iof:MaterialArtifact). Both identifiers denote the functional location site, not the physical equipment — the relationship to equipment is always mediated through the site."@en ,
                                                                                   "Um padrão de projeto ontológico para modelar locais de instalação como sítios espaciais persistentes em sistemas de gestão de ativos industriais. O padrão separa cinco preocupações: sítio espacial (bfo:Site), código do local de instalação (iao:CentrallyRegisteredIdentifier), tag de equipamento (iao:CentrallyRegisteredIdentifier), especificação funcional (iao:DirectiveInformationEntity) e equipamento instalado (iof:MaterialArtifact). Ambos os identificadores denotam o local de instalação, não o equipamento físico — a relação com o equipamento é sempre mediada pelo sítio."@pt-br ;
                                                               dcterms:license <https://creativecommons.org/licenses/by/4.0/> ;
                                                               dcterms:modified "2026-07-01"^^xsd:date ;
                                                               dcterms:subject "Functional Location"@en ,
                                                                               "Gestão de Ativos Industriais"@pt-br ,
                                                                               "ISO 14224"@en ,
                                                                               "Industrial Asset Management"@en ,
                                                                               "Local de Instalação"@pt-br ;
                                                               dcterms:title "Functional Location Ontology Design Pattern"@en ,
                                                                             "Padrão de Projeto Ontológico para Locais de Instalação"@pt-br ;
                                                               owl:versionInfo "0.8.1" ;
                                                               dcterms:hasVersion <https://doi.org/10.5281/zenodo.21112320> ;
                                                               skos:historyNote "v0.1: Initial pattern. v0.2: Added specification class. v0.3: Corrected EquipmentTag semantics (denotes FL, not equipment). v0.4: Full IOF annotation compliance, bilingual EN/PT-BR annotations. v0.5: Added restricting logical axioms (cardinality, existential restrictions, hierarchy level constraints, disjointness), function universals, equipment type universals (COPPP style — primitive classes with necessary conditions). v0.6: Reconciled to IOF Core Release_202602: iof-av: prefix updated to annotation/ namespace, iof-av:maturity replaces maturityLevel, Provisional/Released moved to iof-ind: namespace, MaintenanceActivity IRI corrected to iof-constr:, Equipment annotations updated to MaterialArtifact, Maintenance module added to owl:imports. v0.7: Widened hasBoundaryDeterminedBy range and the FunctionalLocation existential from BFO_0000030 (object) to BFO_0000040 (material entity), matching the FOL annotation and the paper; decoupled the IOF Maintenance dependency into the optional extension odp-fl-maint.ttl by removing the Maintenance import and the performedAtLocation property from the core. v0.8: Removed the intermediate fl:Equipment class; specific equipment types (Sensor, Valve, SeparationEquipment) now specialize iof-constr:MaterialArtifact directly per IOF Core guidance, and installedAt/installedDate/removedDate/hasTag/hostedBy were repointed to iof-constr:MaterialArtifact. The pre-existing FunctionalLocation-disjoint-with-MaterialArtifact axiom now carries the equipment/location disjointness. v0.8.1: Aligned identifies/identifiesLocation to iao:denotes (IAO_0000219), matching the paper (Sec. 5.3) and the FOL annotations; corrected the ontology description to state five concerns with precise groundings (CRID, DirectiveInformationEntity, iof:MaterialArtifact)."@en ;
                                                               iof-av:maturity iof-ind:Provisional .

#################################################################
#    Annotation properties
#################################################################

###  http://purl.org/dc/terms/created
dcterms:created rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/terms/subject
dcterms:subject rdf:type owl:AnnotationProperty .


###  http://www.w3.org/2004/02/skos/core#historyNote
skos:historyNote rdf:type owl:AnnotationProperty .


#################################################################
#    Datatypes
#################################################################

###  http://www.w3.org/2001/XMLSchema#date
xsd:date rdf:type rdfs:Datatype .


#################################################################
#    Object Properties
#################################################################

###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#hasBoundaryDeterminedBy
fl:hasBoundaryDeterminedBy rdf:type owl:ObjectProperty ;
                           rdfs:domain fl:FunctionalLocation ;
                           rdfs:range <http://purl.obolibrary.org/obo/BFO_0000040> ;
                           rdfs:label "has boundary determined by"@en ,
                                      "tem limite determinado por"@pt-br ;
                           skos:example "FL_PT23424_Site hasBoundaryDeterminedBy DeckC_Structure"@en ;
                           iof-av:firstOrderLogicDefinition "hasBoundaryDeterminedBy(x,y) → FunctionalLocation(x) ∧ MaterialEntity(y) ∧ boundaryOf(x) determinedInRelationTo(y)"@en ;
                           iof-av:isPrimitive "true"^^xsd:boolean ;
                           iof-av:maturity iof-ind:Provisional ;
                           iof-av:naturalLanguageDefinition "A relation between a functional location and a material entity such that the material entity provides the reference frame that determines the spatial boundaries of the functional location."@en ,
                                                            "Uma relação entre um local de instalação e uma entidade material tal que a entidade material fornece o referencial que determina os limites espaciais do local de instalação."@pt-br ;
                           iof-av:semiFormalNaturalLanguageDefinition "if x hasBoundaryDeterminedBy y then x is a FunctionalLocation and y is a MaterialEntity and the spatial boundaries of x are determined in relation to y"@en ;
                           iof-av:usageNote "Implements BFO site semantics: site boundaries are determined in relation to material entities but not by coincidence with those entities."@en .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#hasSystemSitePart
fl:hasSystemSitePart rdf:type owl:ObjectProperty ;
                     owl:inverseOf fl:partOfSystemSite ;
                     rdfs:label "has system site part"@en ,
                                "tem parte de sítio do sistema"@pt-br ;
                     iof-av:maturity iof-ind:Provisional .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#hasTag
fl:hasTag rdf:type owl:ObjectProperty ;
          rdfs:domain iof-constr:MaterialArtifact ;
          rdfs:range fl:EquipmentTag ;
          owl:propertyChainAxiom ( fl:installedAt
                                   [ owl:inverseOf fl:identifiesLocation
                                   ]
                                 ) ;
          rdfs:label "has tag"@en ,
                     "tem tag"@pt-br ;
          iof-av:explanatoryNote "Esta relação captura a abreviação pragmática industrial onde engenheiros dizem 'válvula XV-23424' para significar 'a válvula atualmente instalada na posição denotada por XV-23424'. A tag não denota o equipamento — denota a posição."@pt-br ,
                                 "This relation captures the industrial pragmatic shorthand where engineers say 'valve XV-23424' to mean 'the valve currently installed at the position denoted by XV-23424'. The tag does not denote the equipment — it denotes the position."@en ;
          iof-av:firstOrderLogicDefinition "hasTag(x,y) ↔ ∃z(FunctionalLocation(z) ∧ installedAt(x,z) ∧ identifiesLocation(y,z))"@en ;
          iof-av:isPrimitive "false"^^xsd:boolean ;
          iof-av:maturity iof-ind:Provisional ;
          iof-av:naturalLanguageDefinition "A derived relation between equipment and an equipment tag such that the equipment is installed at the functional location identified by the tag. This relation is not asserted but entailed through a property chain: equipment is installedAt a FunctionalLocation, and the EquipmentTag identifiesLocation that same FunctionalLocation."@en ,
                                           "Uma relação derivada entre um equipamento e uma tag de equipamento tal que o equipamento está instalado no local de instalação identificado pela tag. Esta relação não é assertada, mas inferida por uma cadeia de propriedades: o equipamento está installedAt um FunctionalLocation, e a EquipmentTag identifiesLocation o mesmo FunctionalLocation."@pt-br ;
          iof-av:semiFormalNaturalLanguageDefinition "if x hasTag y then there exists a FunctionalLocation z such that x installedAt z and y identifiesLocation z"@en .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#hostedBy
fl:hostedBy rdf:type owl:ObjectProperty ;
            rdfs:domain fl:Sensor ;
            rdfs:range iof-constr:MaterialArtifact ;
            rdfs:label "hospedado por"@pt-br ,
                       "hosted by"@en ;
            skos:example "Sensor PT-23424 hostedBy Valve XV-22342"@en ;
            iof-av:isPrimitive "true"^^xsd:boolean ;
            iof-av:maturity iof-ind:Provisional ;
            iof-av:naturalLanguageDefinition "A relation between a sensor and an equipment item such that the sensor is physically mounted on the equipment item. The sensor has its own functional location but is physically hosted by the equipment."@en ,
                                             "Uma relação entre um sensor e um item de equipamento tal que o sensor está fisicamente montado no item de equipamento. O sensor tem seu próprio local de instalação, mas é fisicamente hospedado pelo equipamento."@pt-br .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#identifies
fl:identifies rdf:type owl:ObjectProperty ;
              rdfs:subPropertyOf <http://purl.obolibrary.org/obo/IAO_0000219> ;
              rdf:type owl:FunctionalProperty ;
              rdfs:domain fl:FunctionalLocationCode ;
              rdfs:range fl:FunctionalLocation ;
              rdfs:label "identifica"@pt-br ,
                         "identifies"@en ;
              iof-av:firstOrderLogicDefinition "identifies(x,y) → FunctionalLocationCode(x) ∧ FunctionalLocation(y) ∧ denotes(x,y) ∧ ∀z(identifies(x,z) → z = y)"@en ;
              iof-av:isPrimitive "true"^^xsd:boolean ;
              iof-av:maturity iof-ind:Provisional ;
              iof-av:naturalLanguageDefinition "A relation between a functional location code and a functional location such that the code uniquely denotes the functional location within the organizational hierarchy following the ISO 14224 coding scheme."@en ,
                                               "Uma relação entre um código de local de instalação e um local de instalação tal que o código denota unicamente o local de instalação dentro da hierarquia organizacional seguindo o esquema de codificação ISO 14224."@pt-br ;
              iof-av:semiFormalNaturalLanguageDefinition "if x identifies y then x is a FunctionalLocationCode and y is a FunctionalLocation and x uniquely denotes y"@en .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#identifiesLocation
fl:identifiesLocation rdf:type owl:ObjectProperty ;
                      rdfs:subPropertyOf <http://purl.obolibrary.org/obo/IAO_0000219> ;
                      rdf:type owl:FunctionalProperty ;
                      rdfs:domain fl:EquipmentTag ;
                      rdfs:range fl:FunctionalLocation ;
                      rdfs:label "identifica local de instalação"@pt-br ,
                                 "identifies location"@en ;
                      iof-av:explanatoryNote "CRITICAL DESIGN DECISION: The equipment tag denotes the functional location (the position), NOT the physical equipment. The relationship between tag and equipment is mediated through the site via the hasTag property chain."@en ,
                                             "DECISÃO DE PROJETO CRÍTICA: A tag de equipamento denota o local de instalação (a posição), NÃO o equipamento físico. A relação entre tag e equipamento é mediada pelo sítio através da cadeia de propriedades hasTag."@pt-br ;
                      iof-av:firstOrderLogicDefinition "identifiesLocation(x,y) → EquipmentTag(x) ∧ FunctionalLocation(y) ∧ denotes(x,y) ∧ ∀z(identifiesLocation(x,z) → z = y)"@en ;
                      iof-av:isPrimitive "true"^^xsd:boolean ;
                      iof-av:maturity iof-ind:Provisional ;
                      iof-av:naturalLanguageDefinition "A relation between an equipment tag and a functional location such that the tag uniquely identifies the functional location where equipment of the designated type is or can be installed. The tag prefix convention encodes the expected equipment type at the position."@en ,
                                                       "Uma relação entre uma tag de equipamento e um local de instalação tal que a tag identifica unicamente o local de instalação onde equipamento do tipo designado está ou pode ser instalado. A convenção de prefixo da tag codifica o tipo esperado de equipamento na posição."@pt-br ;
                      iof-av:semiFormalNaturalLanguageDefinition "if x identifiesLocation y then x is an EquipmentTag and y is a FunctionalLocation and x denotes y"@en .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#indexedBySite
fl:indexedBySite rdf:type owl:ObjectProperty ,
                          owl:FunctionalProperty ;
                 rdfs:domain fl:TimeStampedMeasuredDataset ;
                 rdfs:range fl:FunctionalLocation ;
                 rdfs:label "indexado por sítio"@pt-br ,
                            "indexed by site"@en ;
                 rdfs:seeAlso "CQ2: Temporal continuity across replacements"@en ;
                 iof-av:isPrimitive "true"^^xsd:boolean ;
                 iof-av:maturity iof-ind:Provisional ;
                 iof-av:naturalLanguageDefinition "A relation between a time-stamped measured dataset and a functional location such that the dataset is indexed by the functional location rather than by individual equipment instances, enabling automatic data continuity across equipment replacements."@en ,
                                                  "Uma relação entre um conjunto de dados medidos com carimbo de tempo e um local de instalação tal que o conjunto de dados é indexado pelo local de instalação ao invés de por instâncias individuais de equipamento, permitindo continuidade automática de dados através de substituições de equipamento."@pt-br ;
                 iof-av:usageNote "KEY PATTERN: Enables automatic continuity without application logic to 'stitch' data from different equipment instances."@en .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#installedAt
fl:installedAt rdf:type owl:ObjectProperty ;
               rdfs:subPropertyOf <http://purl.obolibrary.org/obo/BFO_0000171> ;
               rdfs:domain iof-constr:MaterialArtifact ;
               rdfs:range fl:FunctionalLocation ;
               rdfs:label "instalado em"@pt-br ,
                          "installed at"@en ;
               skos:example "Sensor_PT23424_v2 installedAt FL_PT23424_Site (2017-06-16 to 2022-03-10)"@en ;
               iof-av:firstOrderLogicDefinition "installedAt(x,y) → MaterialArtifact(x) ∧ FunctionalLocation(y) ∧ ∃t(located_in(x,y,t))"@en ;
               iof-av:isPrimitive "true"^^xsd:boolean ;
               iof-av:maturity iof-ind:Provisional ;
               iof-av:naturalLanguageDefinition "A relation between a piece of equipment and a functional location such that the equipment is physically installed at the functional location during some temporally bounded period. The temporal bounds are captured via installedDate and removedDate data properties."@en ,
                                                "Uma relação entre uma peça de equipamento e um local de instalação tal que o equipamento está fisicamente instalado no local de instalação durante algum período temporalmente delimitado. Os limites temporais são capturados pelas propriedades de dados installedDate e removedDate."@pt-br ;
               iof-av:semiFormalNaturalLanguageDefinition "if x installedAt y then x is a MaterialArtifact and y is a FunctionalLocation and x is located in y at some time"@en .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#partOfSystemSite
fl:partOfSystemSite rdf:type owl:ObjectProperty ;
                    rdfs:subPropertyOf <http://purl.obolibrary.org/obo/BFO_0000050> ;
                    rdf:type owl:TransitiveProperty ;
                    rdfs:domain fl:FunctionalLocation ;
                    rdfs:range fl:FunctionalLocation ;
                    rdfs:label "part of system site"@en ,
                               "parte de sítio do sistema"@pt-br ;
                    skos:example "MaintainableItemSite partOfSystemSite EquipmentUnitSite"@en ,
                                 "SubsystemSite partOfSystemSite SystemSite"@en ;
                    iof-av:firstOrderLogicDefinition "partOfSystemSite(x,y) → FunctionalLocation(x) ∧ FunctionalLocation(y) ∧ partOf(x,y)"@en ;
                    iof-av:isPrimitive "true"^^xsd:boolean ;
                    iof-av:maturity iof-ind:Provisional ;
                    iof-av:naturalLanguageDefinition "A relation between two functional locations such that the first is a proper part of the second in the ISO 14224 hierarchical decomposition. This relation is transitive, enabling queries across hierarchy levels."@en ,
                                                     "Uma relação entre dois locais de instalação tal que o primeiro é parte própria do segundo na decomposição hierárquica ISO 14224. Esta relação é transitiva, permitindo consultas através dos níveis hierárquicos."@pt-br ;
                    iof-av:semiFormalNaturalLanguageDefinition "if x partOfSystemSite y then x is a FunctionalLocation and y is a FunctionalLocation and x is part of y"@en .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#performedAt
fl:performedAt rdf:type owl:ObjectProperty ;
               rdfs:domain fl:MaintenanceNote ;
               rdfs:range fl:FunctionalLocation ;
               rdfs:label "performed at"@en ,
                          "realizada em"@pt-br ;
               iof-av:isPrimitive "true"^^xsd:boolean ;
               iof-av:maturity iof-ind:Provisional ;
               iof-av:naturalLanguageDefinition "A relation between a maintenance note and a functional location such that the maintenance note documents work performed at the functional location."@en ,
                                                "Uma relação entre uma nota de manutenção e um local de instalação tal que a nota de manutenção documenta trabalho realizado no local de instalação."@pt-br .




###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#requiresFunction
fl:requiresFunction rdf:type owl:ObjectProperty ;
                    rdfs:domain fl:FunctionalLocationSpecification ;
                    rdfs:range <http://purl.obolibrary.org/obo/BFO_0000034> ;
                    rdfs:label "requer função"@pt-br ,
                               "requires function"@en ;
                    iof-av:isPrimitive "true"^^xsd:boolean ;
                    iof-av:maturity iof-ind:Provisional ;
                    iof-av:naturalLanguageDefinition "A relation between a functional location specification and a BFO function such that the specification prescribes that the function must be realized by equipment installed at the associated functional location."@en ,
                                                     "Uma relação entre uma especificação de local de instalação e uma função BFO tal que a especificação prescreve que a função deve ser realizada pelo equipamento instalado no local de instalação associado."@pt-br .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#requiresRole
fl:requiresRole rdf:type owl:ObjectProperty ;
                rdfs:domain fl:FunctionalLocation ;
                rdfs:range fl:RequiredRole ;
                rdfs:label "requer papel"@pt-br ,
                           "requires role"@en ;
                iof-av:isPrimitive "true"^^xsd:boolean ;
                iof-av:maturity iof-ind:Provisional ;
                iof-av:naturalLanguageDefinition "A relation between a functional location and a required role such that equipment installed at the functional location must bear the specified role."@en ,
                                                 "Uma relação entre um local de instalação e um papel requerido tal que o equipamento instalado no local de instalação deve portar o papel especificado."@pt-br .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#specifiesLocation
fl:specifiesLocation rdf:type owl:ObjectProperty ;
                     rdfs:domain fl:FunctionalLocationSpecification ;
                     rdfs:range fl:FunctionalLocation ;
                     rdfs:label "especifica local de instalação"@pt-br ,
                                "specifies location"@en ;
                     iof-av:isPrimitive "true"^^xsd:boolean ;
                     iof-av:maturity iof-ind:Provisional ;
                     iof-av:naturalLanguageDefinition "A relation between a functional location specification and a functional location such that the specification prescribes the required function and technical constraints at the functional location."@en ,
                                                      "Uma relação entre uma especificação de local de instalação e um local de instalação tal que a especificação prescreve a função requerida e as restrições técnicas no local de instalação."@pt-br .


#################################################################
#    Data properties
#################################################################

###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#hasCoordinateX
fl:hasCoordinateX rdf:type owl:DatatypeProperty ,
                           owl:FunctionalProperty ;
                  rdfs:domain fl:FunctionalLocation ;
                  rdfs:range xsd:double ;
                  rdfs:label "has coordinate X"@en ,
                             "tem coordenada X"@pt-br ;
                  iof-av:maturity iof-ind:Provisional ;
                  iof-av:naturalLanguageDefinition "The X coordinate of a functional location relative to a material reference frame."@en .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#hasCoordinateY
fl:hasCoordinateY rdf:type owl:DatatypeProperty ,
                           owl:FunctionalProperty ;
                  rdfs:domain fl:FunctionalLocation ;
                  rdfs:range xsd:double ;
                  rdfs:label "has coordinate Y"@en ,
                             "tem coordenada Y"@pt-br ;
                  iof-av:maturity iof-ind:Provisional ;
                  iof-av:naturalLanguageDefinition "The Y coordinate of a functional location relative to a material reference frame."@en .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#hasCoordinateZ
fl:hasCoordinateZ rdf:type owl:DatatypeProperty ,
                           owl:FunctionalProperty ;
                  rdfs:domain fl:FunctionalLocation ;
                  rdfs:range xsd:double ;
                  rdfs:label "has coordinate Z"@en ,
                             "tem coordenada Z"@pt-br ;
                  skos:example "Z: +12.6m (Deck C level on platform P-74)"@en ;
                  iof-av:maturity iof-ind:Provisional ;
                  iof-av:naturalLanguageDefinition "The Z coordinate (elevation) of a functional location relative to a material reference frame."@en .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#hasSeriesLabel
fl:hasSeriesLabel rdf:type owl:DatatypeProperty ,
                           owl:FunctionalProperty ;
                  rdfs:domain fl:TimeStampedMeasuredDataset ;
                  rdfs:range xsd:string ;
                  rdfs:label "has series label"@en ,
                             "tem rótulo da série"@pt-br ;
                  iof-av:maturity iof-ind:Provisional ;
                  iof-av:naturalLanguageDefinition "A user-facing label for a time series dataset."@en .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#installedDate
fl:installedDate rdf:type owl:DatatypeProperty ,
                          owl:FunctionalProperty ;
                 rdfs:domain iof-constr:MaterialArtifact ;
                 rdfs:range xsd:dateTime ;
                 rdfs:label "data de instalação"@pt-br ,
                            "installed date"@en ;
                 iof-av:maturity iof-ind:Provisional ;
                 iof-av:naturalLanguageDefinition "O carimbo de tempo de quando o equipamento foi instalado em um local de instalação."@pt-br ,
                                                  "The timestamp when equipment was installed at a functional location."@en .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#noteText
fl:noteText rdf:type owl:DatatypeProperty ;
            rdfs:domain fl:MaintenanceNote ;
            rdfs:range xsd:string ;
            rdfs:label "note text"@en ,
                       "texto da nota"@pt-br ;
            iof-av:maturity iof-ind:Provisional .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#noteTimestamp
fl:noteTimestamp rdf:type owl:DatatypeProperty ,
                          owl:FunctionalProperty ;
                 rdfs:domain fl:MaintenanceNote ;
                 rdfs:range xsd:dateTime ;
                 rdfs:label "carimbo de tempo da nota"@pt-br ,
                            "note timestamp"@en ;
                 iof-av:maturity iof-ind:Provisional .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#removedDate
fl:removedDate rdf:type owl:DatatypeProperty ,
                        owl:FunctionalProperty ;
               rdfs:domain iof-constr:MaterialArtifact ;
               rdfs:range xsd:dateTime ;
               rdfs:label "data de remoção"@pt-br ,
                          "removed date"@en ;
               iof-av:maturity iof-ind:Provisional ;
               iof-av:naturalLanguageDefinition "O carimbo de tempo de quando o equipamento foi removido de um local de instalação. A ausência indica que o equipamento está atualmente instalado."@pt-br ,
                                                "The timestamp when equipment was removed from a functional location. Absence indicates equipment is currently installed."@en .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#storedAt
fl:storedAt rdf:type owl:DatatypeProperty ,
                     owl:FunctionalProperty ;
            rdfs:domain fl:TimeStampedMeasuredDataset ;
            rdfs:range xsd:anyURI ;
            rdfs:label "armazenado em"@pt-br ,
                       "stored at"@en ;
            iof-av:maturity iof-ind:Provisional ;
            iof-av:naturalLanguageDefinition "The URI of the storage system where time series data is physically stored."@en .


#################################################################
#    Classes
#################################################################




###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#EquipmentTag
fl:EquipmentTag rdf:type owl:Class ;
                rdfs:subClassOf <http://purl.obolibrary.org/obo/IAO_0000578> ,
                                [ rdf:type owl:Restriction ;
                                  owl:onProperty fl:identifiesLocation ;
                                  owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                  owl:onClass fl:FunctionalLocation
                                ] ;
                owl:disjointWith fl:FunctionalLocationCode ;
                rdfs:label "Equipment Tag"@en ,
                           "Tag de Equipamento"@pt-br ;
                skos:altLabel "Tag"@en ,
                              "Tag"@pt-br ;
                skos:example "PT-23424 (posição de transmissor de pressão)"@pt-br ,
                             "PT-23424 (pressure transmitter position)"@en ,
                             "XV-23423 (control valve position)"@en ;
                skos:prefLabel "Equipment Tag"@en ,
                               "Tag de Equipamento"@pt-br ;
                iof-av:explanatoryNote "Convenções de prefixo da tag: XV = válvula de controle, PSV = válvula de segurança de pressão, PT = transmissor de pressão, FT = transmissor de vazão, LV = válvula de nível. Estes são resumos convencionalizados da classificação funcional da especificação, mas não substituem a especificação."@pt-br ,
                                       "Tag prefix conventions: XV = control valve, PSV = pressure safety valve, PT = pressure transmitter, FT = flow transmitter, LV = level valve. These are conventionalized summaries of the specification's functional classification but do not replace the specification."@en ;
                iof-av:firstOrderLogicDefinition "EquipmentTag(x) → Identifier(x) ∧ ∃!y(FunctionalLocation(y) ∧ identifiesLocation(x,y)) ∧ ¬FunctionalLocationCode(x)"@en ;
                iof-av:isPrimitive "true"^^xsd:boolean ;
                iof-av:maturity iof-ind:Provisional ;
                iof-av:naturalLanguageDefinition "An equipment tag is an identifier that denotes a functional location through industrial naming conventions, where the tag prefix encodes the expected equipment type at the position. The tag does not denote the physical equipment — the relationship between tag and equipment is mediated through the functional location."@en ,
                                                 "Uma tag de equipamento é um identificador que denota um local de instalação através de convenções industriais de nomenclatura, onde o prefixo da tag codifica o tipo esperado de equipamento na posição. A tag não denota o equipamento físico — a relação entre tag e equipamento é mediada pelo local de instalação."@pt-br ;
                iof-av:semiFormalNaturalLanguageDefinition "every instance of EquipmentTag is an instance of iao:CentrallyRegisteredIdentifier that identifiesLocation exactly one FunctionalLocation and that is disjoint from FunctionalLocationCode"@en ;
                iof-av:usageNote "Quando engenheiros dizem 'válvula XV-23424', eles usam a tag de equipamento como uma abreviação pragmática para 'o equipamento atualmente instalado na posição denotada por XV-23424'."@pt-br ,
                                 "When engineers say 'valve XV-23424', they use the equipment tag as a pragmatic shorthand for 'the equipment currently installed at the position denoted by XV-23424'."@en .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#EquipmentUnitSite
fl:EquipmentUnitSite rdf:type owl:Class ;
                     rdfs:subClassOf fl:FunctionalLocation ,
                                     [ rdf:type owl:Restriction ;
                                       owl:onProperty fl:partOfSystemSite ;
                                       owl:someValuesFrom fl:SubsystemSite
                                     ] ;
                     rdfs:label "Equipment Unit Site"@en ,
                                "Sítio da Unidade de Equipamento"@pt-br ;
                     iof-av:adaptedFrom "ISO 14224:2016 Level 4: Equipment Unit"@en ;
                     iof-av:isPrimitive "true"^^xsd:boolean ;
                     iof-av:maturity iof-ind:Provisional ;
                     iof-av:naturalLanguageDefinition "An equipment unit site is a functional location that represents a unit within a subsystem in the ISO 14224 hierarchy."@en ,
                                                      "Um sítio da unidade de equipamento é um local de instalação que representa uma unidade dentro de um subsistema na hierarquia ISO 14224."@pt-br .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#FlowRegulationFunction
fl:FlowRegulationFunction rdf:type owl:Class ;
                          rdfs:subClassOf <http://purl.obolibrary.org/obo/BFO_0000034> ;
                          rdfs:label "Flow Regulation Function"@en ,
                                     "Função de Regulação de Fluxo"@pt-br ;
                          iof-av:isPrimitive "true"^^xsd:boolean ;
                          iof-av:maturity iof-ind:Provisional ;
                          iof-av:naturalLanguageDefinition "A flow regulation function is a BFO function that is realized in a process of controlling the rate, direction, or pressure of fluid flow through a piping system by varying the resistance to flow."@en ,
                                                           "Uma função de regulação de fluxo é uma função BFO que é realizada em um processo de controlar a vazão, direção ou pressão do fluxo de fluido através de um sistema de tubulação variando a resistência ao fluxo."@pt-br .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#FunctionalLocation
fl:FunctionalLocation rdf:type owl:Class ;
                      rdfs:subClassOf <http://purl.obolibrary.org/obo/BFO_0000029> ,
                                      [ rdf:type owl:Restriction ;
                                        owl:onProperty fl:hasBoundaryDeterminedBy ;
                                        owl:someValuesFrom <http://purl.obolibrary.org/obo/BFO_0000040>
                                      ] ;
                      rdfs:label "Functional Location"@en ,
                                 "Local de Instalação"@pt-br ;
                      rdfs:seeAlso "CQ1: Current equipment assignment"@en ,
                                   "CQ3: Hierarchical navigation"@en ,
                                   "CQ5: Spatial proximity"@en ;
                      skos:altLabel "FL"@en ,
                                    "LI"@pt-br ;
                      skos:example "Site for pressure transmitter PT-23424 in gas dehydration system"@en ,
                                   "Sítio para o transmissor de pressão PT-23424 no sistema de desidratação de gás"@pt-br ;
                      skos:prefLabel "Functional Location"@en ,
                                     "Local de Instalação"@pt-br ;
                      iof-av:adaptedFrom "ISO 14224:2016 — 'a position in a functional hierarchy where a maintainable item is or can be installed'"@en ;
                      iof-av:explanatoryNote "A escolha de bfo:Site como categoria de fundamentação resulta de uma eliminação sistemática de alternativas: MaterialEntity falha na persistência quando vazio, Role falha na persistência (requer portador), InformationContentEntity falha nas consultas espaciais, SpatialRegion falha na relatividade à estrutura da planta. Somente Site satisfaz todos os requisitos simultaneamente."@pt-br ,
                                             "The choice of bfo:Site as the grounding category results from a systematic elimination of alternatives: MaterialEntity fails persistence when empty, Role fails persistence (requires bearer), InformationContentEntity fails spatial queries, SpatialRegion fails relativity to plant structure. Only Site satisfies all requirements simultaneously."@en ;
                      iof-av:firstOrderLogicDefinition "FunctionalLocation(x) → Site(x) ∧ ∃y(MaterialEntity(y) ∧ hasBoundaryDeterminedBy(x,y)) ∧ ¬MaterialArtifact(x)"@en ;
                      iof-av:isPrimitive "true"^^xsd:boolean ;
                      iof-av:maturity iof-ind:Provisional ;
                      iof-av:naturalLanguageDefinition "A functional location is a site that is a persistent spatial position in an industrial facility hierarchy where a maintainable item is or can be installed, and whose boundaries are determined in relation to delimiting material structures rather than by the equipment that may occupy it."@en ,
                                                       "Um local de instalação é um sítio que é uma posição espacial persistente em uma hierarquia de instalação industrial onde um item manutenível está ou pode ser instalado, e cujos limites são determinados em relação a estruturas materiais delimitadoras e não pelo equipamento que possa ocupá-lo."@pt-br ;
                      iof-av:semiFormalNaturalLanguageDefinition "every instance of FunctionalLocation is an instance of bfo:Site that (1) has its boundaries determined by some MaterialEntity, (2) persists independently of whether any Equipment is installed at it, and (3) participates in an ISO 14224 hierarchical decomposition via partOfSystemSite"@en ;
                      iof-av:synonym "Installation Position"@en ,
                                     "Posição de Instalação"@pt-br ,
                                     "Tag Location"@en ;
                      iof-av:usageNote "A functional location persists when empty — when equipment is removed, the inlet/outlet nozzles and foundation bolts remain, so the site boundaries remain anchored."@en ,
                                       "Um local de instalação persiste quando vazio — quando o equipamento é removido, os bocais de entrada/saída e os parafusos de fundação permanecem, então os limites do sítio permanecem ancorados."@pt-br .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#FunctionalLocationCode
fl:FunctionalLocationCode rdf:type owl:Class ;
                          rdfs:subClassOf <http://purl.obolibrary.org/obo/IAO_0000578> ,
                                          [ rdf:type owl:Restriction ;
                                            owl:onProperty fl:identifies ;
                                            owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                            owl:onClass fl:FunctionalLocation
                                          ] ;
                          rdfs:label "Código do Local de Instalação"@pt-br ,
                                     "Functional Location Code"@en ;
                          skos:altLabel "Código LI"@pt-br ,
                                        "FL Code"@en ;
                          skos:example "30142.FSGE.FEW.10.01.1"@en ,
                                       "30234.FSFS.FWSF.10.01.01"@en ;
                          skos:prefLabel "Código do Local de Instalação"@pt-br ,
                                         "Functional Location Code"@en ;
                          iof-av:adaptedFrom "ISO 14224:2016 — five-level hierarchical coding scheme"@en ;
                          iof-av:explanatoryNote "Distinct from EquipmentTag: the FL code encodes organizational hierarchy (WHERE in the structure), while the equipment tag encodes functional designation (WHAT type of equipment is expected). Both denote the same functional location."@en ,
                                                 "Distinto da Tag de Equipamento: o código LI codifica a hierarquia organizacional (ONDE na estrutura), enquanto a tag de equipamento codifica a designação funcional (QUE tipo de equipamento é esperado). Ambos denotam o mesmo local de instalação."@pt-br ;
                          iof-av:firstOrderLogicDefinition "FunctionalLocationCode(x) → Identifier(x) ∧ ∃!y(FunctionalLocation(y) ∧ identifies(x,y)) ∧ ¬EquipmentTag(x)"@en ;
                          iof-av:isPrimitive "true"^^xsd:boolean ;
                          iof-av:maturity iof-ind:Provisional ;
                          iof-av:naturalLanguageDefinition "A functional location code is an identifier that denotes a functional location by encoding the position's place in the ISO 14224 organizational hierarchy, with segments representing plant, system, subsystem, equipment unit, and maintainable item levels."@en ,
                                                           "Um código de local de instalação é um identificador que denota um local de instalação codificando a posição do local na hierarquia organizacional ISO 14224, com segmentos representando os níveis de planta, sistema, subsistema, unidade de equipamento e item manutenível."@pt-br ;
                          iof-av:semiFormalNaturalLanguageDefinition "every instance of FunctionalLocationCode is an instance of iao:CentrallyRegisteredIdentifier that identifies exactly one FunctionalLocation and that is disjoint from EquipmentTag"@en .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#FunctionalLocationSpecification
fl:FunctionalLocationSpecification rdf:type owl:Class ;
                                   rdfs:subClassOf <http://purl.obolibrary.org/obo/IAO_0000033> ,
                                                   [ rdf:type owl:Restriction ;
                                                     owl:onProperty fl:specifiesLocation ;
                                                     owl:someValuesFrom fl:FunctionalLocation
                                                   ] ;
                                   rdfs:label "Especificação do Local de Instalação"@pt-br ,
                                              "Functional Location Specification"@en ;
                                   skos:example "Especificação requerendo função de medição de pressão, faixa 0-350 bar, ATEX Zona 1"@pt-br ,
                                                "Spec requiring pressure sensing function, range 0-350 bar, ATEX Zone 1"@en ;
                                   skos:prefLabel "Especificação do Local de Instalação"@pt-br ,
                                                  "Functional Location Specification"@en ;
                                   iof-av:explanatoryNote "Relacionada mas distinta da Tag de Equipamento: duas posições podem compartilhar o mesmo prefixo de tag (ex., ambas XV-) enquanto possuem especificações diferentes (uma classificada para 150 bar, outra para 300 bar). Corresponde a IDO lis:Specified no mapeamento IDO."@pt-br ,
                                                          "Related to but distinct from EquipmentTag: two positions may share the same tag prefix (e.g., both XV-) while having different specifications (one rated for 150 bar, another for 300 bar). Corresponds to IDO lis:Specified in the IDO mapping."@en ;
                                   iof-av:firstOrderLogicDefinition "FunctionalLocationSpecification(x) → DirectiveInformationEntity(x) ∧ ∃y(FunctionalLocation(y) ∧ specifiesLocation(x,y)) ∧ ∃z(Function(z) ∧ requiresFunction(x,z))"@en ;
                                   iof-av:isPrimitive "false"^^xsd:boolean ;
                                   iof-av:maturity iof-ind:Provisional ;
                                   iof-av:naturalLanguageDefinition "A functional location specification is a directive information entity that prescribes the required function and technical constraints (such as pressure ratings, material requirements, and interface dimensions) at a functional location. Specifications persist independently of installed equipment and may evolve over the plant lifecycle."@en ,
                                                                    "Uma especificação de local de instalação é uma entidade informacional diretiva que prescreve a função requerida e as restrições técnicas (tais como classificações de pressão, requisitos de material e dimensões de interface) em um local de instalação. Especificações persistem independentemente do equipamento instalado e podem evoluir ao longo do ciclo de vida da planta."@pt-br ;
                                   iof-av:semiFormalNaturalLanguageDefinition "every instance of FunctionalLocationSpecification is an instance of iao:DirectiveInformationEntity that specifiesLocation some FunctionalLocation and requiresFunction some bfo:Function"@en ;
                                   iof-av:synonym "Especificação LI"@pt-br ,
                                                  "FL Specification"@en .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#GasLiquidSeparationFunction
fl:GasLiquidSeparationFunction rdf:type owl:Class ;
                               rdfs:subClassOf fl:SeparationFunction ;
                               rdfs:label "Função de Separação Gás-Líquido"@pt-br ,
                                          "Gas-Liquid Separation Function"@en ;
                               iof-av:isPrimitive "true"^^xsd:boolean ;
                               iof-av:maturity iof-ind:Provisional ;
                               iof-av:naturalLanguageDefinition "A gas-liquid separation function is a separation function that is realized in a process whereby a multiphase mixture is divided into a gas phase stream and a liquid phase stream based on differences in density."@en ,
                                                                "Uma função de separação gás-líquido é uma função de separação que é realizada em um processo pelo qual uma mistura multifásica é dividida em um fluxo de fase gasosa e um fluxo de fase líquida com base em diferenças de densidade."@pt-br .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#GasLiquidSeparator
fl:GasLiquidSeparator rdf:type owl:Class ;
                      rdfs:subClassOf fl:SeparationEquipment ,
                                      [ rdf:type owl:Restriction ;
                                        owl:onProperty <http://purl.obolibrary.org/obo/BFO_0000196> ;
                                        owl:someValuesFrom fl:GasLiquidSeparationFunction
                                      ] ;
                      rdfs:label "Gas-Liquid Separator"@en ,
                                 "Separador Gás-Líquido"@pt-br ;
                      skos:example "Production separator vessel in gas dehydration unit"@en ,
                                   "Vaso separador de produção na unidade de desidratação de gás"@pt-br ;
                      iof-av:firstOrderLogicDefinition "GasLiquidSeparator(x) → SeparationEquipment(x) ∧ ∃f(GasLiquidSeparationFunction(f) ∧ bears(x,f))"@en ;
                      iof-av:isPrimitive "true"^^xsd:boolean ;
                      iof-av:maturity iof-ind:Provisional ;
                      iof-av:naturalLanguageDefinition "A gas-liquid separator is a separation equipment that bears a gas-liquid separation function, i.e., it is designed to separate a multiphase mixture into distinct gas and liquid phase streams."@en ,
                                                       "Um separador gás-líquido é um equipamento de separação que porta uma função de separação gás-líquido, ou seja, é projetado para separar uma mistura multifásica em fluxos distintos de fase gasosa e líquida."@pt-br ;
                      iof-av:semiFormalNaturalLanguageDefinition "every instance of GasLiquidSeparator is an instance of SeparationEquipment that bears some GasLiquidSeparationFunction"@en .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#MaintainableItemSite
fl:MaintainableItemSite rdf:type owl:Class ;
                        rdfs:subClassOf fl:FunctionalLocation ,
                                        [ rdf:type owl:Restriction ;
                                          owl:onProperty fl:partOfSystemSite ;
                                          owl:someValuesFrom fl:EquipmentUnitSite
                                        ] ;
                        rdfs:label "Maintainable Item Site"@en ,
                                   "Sítio do Item Manutenível"@pt-br ;
                        skos:example "Site for individual sensor PT-23424"@en ,
                                     "Sítio para o sensor individual PT-23424"@pt-br ;
                        iof-av:adaptedFrom "ISO 14224:2016 Level 5: Maintainable Item"@en ;
                        iof-av:isPrimitive "true"^^xsd:boolean ;
                        iof-av:maturity iof-ind:Provisional ;
                        iof-av:naturalLanguageDefinition "A maintainable item site is a functional location that is the lowest level in the ISO 14224 hierarchy where a single maintainable item is or can be installed."@en ,
                                                         "Um sítio do item manutenível é um local de instalação que é o nível mais baixo na hierarquia ISO 14224 onde um único item manutenível está ou pode ser instalado."@pt-br .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#MaintenanceNote
fl:MaintenanceNote rdf:type owl:Class ;
                   rdfs:subClassOf <http://purl.obolibrary.org/obo/IAO_0000100> ;
                   rdfs:label "Maintenance Note"@en ,
                              "Nota de Manutenção"@pt-br ;
                   iof-av:isPrimitive "true"^^xsd:boolean ;
                   iof-av:maturity iof-ind:Provisional ;
                   iof-av:naturalLanguageDefinition "A maintenance note is a data item that is a textual record created during maintenance work, anchored to a functional location rather than to equipment for persistence across replacements."@en ,
                                                    "Uma nota de manutenção é um item de dado que é um registro textual criado durante trabalho de manutenção, ancorado a um local de instalação ao invés de ao equipamento para persistência através de substituições."@pt-br .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#PlantSite
fl:PlantSite rdf:type owl:Class ;
             rdfs:subClassOf fl:FunctionalLocation ;
             rdfs:label "Plant Site"@en ,
                        "Sítio da Planta"@pt-br ;
             skos:example "Offshore platform P-74"@en ,
                          "Plataforma offshore P-74"@pt-br ;
             iof-av:adaptedFrom "ISO 14224:2016 Level 1: Plant"@en ;
             iof-av:isPrimitive "true"^^xsd:boolean ;
             iof-av:maturity iof-ind:Provisional ;
             iof-av:naturalLanguageDefinition "A plant site is a functional location that is the highest level in the ISO 14224 hierarchy, representing an entire industrial plant or facility."@en ,
                                              "Um sítio da planta é um local de instalação que é o nível mais alto na hierarquia ISO 14224, representando uma planta ou instalação industrial inteira."@pt-br .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#PressureSensingFunction
fl:PressureSensingFunction rdf:type owl:Class ;
                           rdfs:subClassOf <http://purl.obolibrary.org/obo/BFO_0000034> ;
                           rdfs:label "Função de Medição de Pressão"@pt-br ,
                                      "Pressure Sensing Function"@en ;
                           iof-av:isPrimitive "true"^^xsd:boolean ;
                           iof-av:maturity iof-ind:Provisional ;
                           iof-av:naturalLanguageDefinition "A pressure sensing function is a BFO function that is realized in a process of measuring the pressure of a fluid or gas within a system and producing a signal proportional to the measured pressure."@en ,
                                                            "Uma função de medição de pressão é uma função BFO que é realizada em um processo de medir a pressão de um fluido ou gás dentro de um sistema e produzir um sinal proporcional à pressão medida."@pt-br .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#RequiredRole
fl:RequiredRole rdf:type owl:Class ;
                rdfs:subClassOf <http://purl.obolibrary.org/obo/BFO_0000023> ;
                rdfs:label "Papel Requerido"@pt-br ,
                           "Required Role"@en ;
                skos:example "Papel de estrangulamento variável, papel de controle de alta pressão"@pt-br ,
                             "Variable choking role, high-pressure control role"@en ;
                iof-av:isPrimitive "true"^^xsd:boolean ;
                iof-av:maturity iof-ind:Provisional ;
                iof-av:naturalLanguageDefinition "A required role is a BFO role that specifies the functional requirements for equipment at a functional location."@en ,
                                                 "Um papel requerido é um papel BFO que especifica os requisitos funcionais para equipamento em um local de instalação."@pt-br .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#Sensor
fl:Sensor rdf:type owl:Class ;
          rdfs:subClassOf iof-constr:MaterialArtifact ;
          rdfs:label "Sensor"@en ,
                     "Sensor"@pt-br ;
          skos:example "Pressure sensor installed at position PT-23424"@en ,
                       "Sensor de pressão instalado na posição PT-23424"@pt-br ;
          iof-av:isPrimitive "true"^^xsd:boolean ;
          iof-av:maturity iof-ind:Provisional ;
          iof-av:naturalLanguageDefinition "A sensor is an equipment item that measures physical properties such as pressure, temperature, or flow."@en ,
                                           "Um sensor é um item de equipamento que mede propriedades físicas tais como pressão, temperatura ou vazão."@pt-br .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#SeparationEquipment
fl:SeparationEquipment rdf:type owl:Class ;
                       rdfs:subClassOf iof-constr:MaterialArtifact ,
                                       [ rdf:type owl:Restriction ;
                                         owl:onProperty <http://purl.obolibrary.org/obo/BFO_0000196> ;
                                         owl:someValuesFrom fl:SeparationFunction
                                       ] ;
                       rdfs:label "Equipamento de Separação"@pt-br ,
                                  "Separation Equipment"@en ;
                       iof-av:explanatoryNote "Modelado como um universal (classe primitiva com condições necessárias), não uma classe definida. Instâncias são assertadas como SeparationEquipment, não inferidas apenas pela função. Isto segue a abordagem do COPPP onde universais de tipos de equipamento carregam axiomas necessários mas a classificação requer asserção de especialista de domínio."@pt-br ,
                                              "Modeled as a universal (primitive class with necessary conditions), not a defined class. Instances are asserted as SeparationEquipment, not inferred from function alone. This follows the COPPP approach where equipment type universals carry necessary axioms but classification requires domain expert assertion."@en ;
                       iof-av:firstOrderLogicDefinition "SeparationEquipment(x) → MaterialArtifact(x) ∧ ∃f(SeparationFunction(f) ∧ bears(x,f))"@en ;
                       iof-av:isPrimitive "true"^^xsd:boolean ;
                       iof-av:maturity iof-ind:Provisional ;
                       iof-av:naturalLanguageDefinition "A separation equipment is an equipment item that bears a separation function, i.e., it is designed to divide a mixture into two or more distinct output streams."@en ,
                                                        "Um equipamento de separação é um item de equipamento que porta uma função de separação, ou seja, é projetado para dividir uma mistura em dois ou mais fluxos de saída distintos."@pt-br ;
                       iof-av:semiFormalNaturalLanguageDefinition "every instance of SeparationEquipment is an instance of MaterialArtifact that bears some SeparationFunction"@en .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#SeparationFunction
fl:SeparationFunction rdf:type owl:Class ;
                      rdfs:subClassOf <http://purl.obolibrary.org/obo/BFO_0000034> ;
                      rdfs:label "Função de Separação"@pt-br ,
                                 "Separation Function"@en ;
                      iof-av:isPrimitive "true"^^xsd:boolean ;
                      iof-av:maturity iof-ind:Provisional ;
                      iof-av:naturalLanguageDefinition "A separation function is a BFO function that is realized in a process whereby a mixture is divided into two or more distinct output streams based on differences in physical or chemical properties of the constituents."@en ,
                                                       "Uma função de separação é uma função BFO que é realizada em um processo pelo qual uma mistura é dividida em dois ou mais fluxos de saída distintos com base em diferenças nas propriedades físicas ou químicas dos constituintes."@pt-br .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#SubsystemSite
fl:SubsystemSite rdf:type owl:Class ;
                 rdfs:subClassOf fl:FunctionalLocation ,
                                 [ rdf:type owl:Restriction ;
                                   owl:onProperty fl:partOfSystemSite ;
                                   owl:someValuesFrom fl:SystemSite
                                 ] ;
                 rdfs:label "Subsystem Site"@en ,
                            "Sítio do Subsistema"@pt-br ;
                 skos:example "Inlet Separator subsystem site within Gas Dehydration System"@en ;
                 iof-av:adaptedFrom "ISO 14224:2016 Level 3: Subsystem"@en ;
                 iof-av:isPrimitive "true"^^xsd:boolean ;
                 iof-av:maturity iof-ind:Provisional ;
                 iof-av:naturalLanguageDefinition "A subsystem site is a functional location that represents a subsystem within a system in the ISO 14224 hierarchy."@en ,
                                                  "Um sítio do subsistema é um local de instalação que representa um subsistema dentro de um sistema na hierarquia ISO 14224."@pt-br .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#SystemSite
fl:SystemSite rdf:type owl:Class ;
              rdfs:subClassOf fl:FunctionalLocation ,
                              [ rdf:type owl:Restriction ;
                                owl:onProperty fl:partOfSystemSite ;
                                owl:someValuesFrom fl:PlantSite
                              ] ;
              rdfs:label "System Site"@en ,
                         "Sítio do Sistema"@pt-br ;
              skos:example "Gas Dehydration System site within platform P-74"@en ,
                           "Sítio do Sistema de Desidratação de Gás dentro da plataforma P-74"@pt-br ;
              iof-av:adaptedFrom "ISO 14224:2016 Level 2: System"@en ;
              iof-av:isPrimitive "true"^^xsd:boolean ;
              iof-av:maturity iof-ind:Provisional ;
              iof-av:naturalLanguageDefinition "A system site is a functional location that represents a major system within a plant in the ISO 14224 hierarchy."@en ,
                                               "Um sítio do sistema é um local de instalação que representa um sistema principal dentro de uma planta na hierarquia ISO 14224."@pt-br .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#TimeStampedMeasuredDataset
fl:TimeStampedMeasuredDataset rdf:type owl:Class ;
                              rdfs:subClassOf <http://purl.obolibrary.org/obo/IAO_0000100> ;
                              rdfs:label "Conjunto de Dados Medidos com Carimbo de Tempo"@pt-br ,
                                         "Time-Stamped Measured Dataset"@en ;
                              rdfs:seeAlso "CQ2: Temporal continuity across equipment replacements"@en ;
                              iof-av:isPrimitive "true"^^xsd:boolean ;
                              iof-av:maturity iof-ind:Provisional ;
                              iof-av:naturalLanguageDefinition "A time-stamped measured dataset is a data item that contains time-series observations indexed by a functional location for persistent data anchoring across equipment replacements."@en ,
                                                               "Um conjunto de dados medidos com carimbo de tempo é um item de dado que contém observações de séries temporais indexadas por um local de instalação para ancoragem persistente de dados através de substituições de equipamento."@pt-br .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#Valve
fl:Valve rdf:type owl:Class ;
         rdfs:subClassOf iof-constr:MaterialArtifact ;
         rdfs:label "Valve"@en ,
                    "Válvula"@pt-br ;
         skos:example "Block valve installed at position XV-23423"@en ,
                      "Válvula de bloqueio instalada na posição XV-23423"@pt-br ;
         iof-av:isPrimitive "true"^^xsd:boolean ;
         iof-av:maturity iof-ind:Provisional ;
         iof-av:naturalLanguageDefinition "A valve is an equipment item that controls fluid flow in piping systems."@en ,
                                          "Uma válvula é um item de equipamento que controla o fluxo de fluido em sistemas de tubulação."@pt-br .


#################################################################
#    Individuals
#################################################################

###  https://spec.industrialontologies.org/ontology/core/meta/AnnotationVocabulary/Provisional
iof-ind:Provisional rdf:type owl:NamedIndividual .


###  https://spec.industrialontologies.org/ontology/core/meta/AnnotationVocabulary/Released
iof-ind:Released rdf:type owl:NamedIndividual .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#Code_PT23424
fl:Code_PT23424 rdf:type owl:NamedIndividual ,
                         fl:FunctionalLocationCode ;
                fl:identifies fl:FL_PT23424_Site ;
                rdfs:comment "Código do local de instalação para posição de transmissor de pressão PT-23424."@pt-br ,
                             "Functional location code for pressure transmitter position PT-23424."@en ;
                rdfs:label "30234.FSFS.FWSF.10.01.01"@en .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#FL_PT23424_Site
fl:FL_PT23424_Site rdf:type owl:NamedIndividual ,
                            fl:MaintainableItemSite ;
                   fl:partOfSystemSite fl:FL_V23401_Site ;
                   fl:hasCoordinateX "145.4"^^xsd:double ;
                   fl:hasCoordinateY "67.8"^^xsd:double ;
                   fl:hasCoordinateZ "12.6"^^xsd:double ;
                   rdfs:comment "Coordenadas relativas à estrutura do Deck C (referencial material). Persiste independentemente de qual sensor está instalado."@pt-br ,
                                "Coordinates relative to Deck C structure (material reference frame). Persists regardless of which sensor is installed."@en ;
                   rdfs:label "Functional Location for PT-23424"@en ,
                              "Local de Instalação para PT-23424"@pt-br .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#GasDehydrationSystem_Site
fl:GasDehydrationSystem_Site rdf:type owl:NamedIndividual ,
                                      fl:SystemSite ;
                             fl:partOfSystemSite fl:P74_Platform ;
                             rdfs:label "Gas Dehydration System Site"@en ,
                                        "Sítio do Sistema de Desidratação de Gás"@pt-br .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#InletSeparator_Site
fl:InletSeparator_Site rdf:type owl:NamedIndividual ,
                                fl:SubsystemSite ;
                       fl:partOfSystemSite fl:GasDehydrationSystem_Site ;
                       rdfs:label "Inlet Separator Site"@en ,
                                  "Sítio do Separador de Entrada"@pt-br .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#P74_Platform
fl:P74_Platform rdf:type owl:NamedIndividual ,
                         fl:PlantSite ;
                rdfs:label "Plataforma P-74"@pt-br ,
                           "Platform P-74"@en .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#PressureSensingFunction_1
fl:PressureSensingFunction_1 rdf:type owl:NamedIndividual ,
                                      fl:PressureSensingFunction ;
                             rdfs:label "Função de Medição de Pressão (PT-23424)"@pt-br ,
                                        "Pressure Sensing Function (PT-23424)"@en .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#Sensor_PT23424_v1
fl:Sensor_PT23424_v1 rdf:type owl:NamedIndividual ,
                              fl:Sensor ;
                     fl:installedAt fl:FL_PT23424_Site ;
                     fl:installedDate "2015-01-01T00:00:00"^^xsd:dateTime ;
                     fl:removedDate "2017-06-15T10:30:00"^^xsd:dateTime ;
                     rdfs:label "Sensor PT-23424 v1"@en .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#Sensor_PT23424_v2
fl:Sensor_PT23424_v2 rdf:type owl:NamedIndividual ,
                              fl:Sensor ;
                     fl:installedAt fl:FL_PT23424_Site ;
                     fl:installedDate "2017-06-16T08:00:00"^^xsd:dateTime ;
                     fl:removedDate "2022-03-10T14:20:00"^^xsd:dateTime ;
                     rdfs:label "Sensor PT-23424 v2"@en .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#Sensor_PT23424_v3
fl:Sensor_PT23424_v3 rdf:type owl:NamedIndividual ,
                              fl:Sensor ;
                     fl:installedAt fl:FL_PT23424_Site ;
                     fl:installedDate "2022-03-11T09:15:00"^^xsd:dateTime ;
                     rdfs:comment "Atualmente instalado (sem data de remoção)."@pt-br ,
                                  "Currently installed (no removal date)."@en ;
                     rdfs:label "Sensor PT-23424 v3"@en .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#Spec_PT23424
fl:Spec_PT23424 rdf:type owl:NamedIndividual ,
                         fl:FunctionalLocationSpecification ;
                fl:requiresFunction fl:PressureSensingFunction_1 ;
                fl:specifiesLocation fl:FL_PT23424_Site ;
                rdfs:comment "Requer função de medição de pressão, faixa 0-350 bar, ATEX Zona 1."@pt-br ,
                             "Requires pressure sensing function, 0-350 bar range, ATEX Zone 1."@en ;
                rdfs:label "Especificação para PT-23424"@pt-br ,
                           "Specification for PT-23424"@en .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#TS_Pressure_PT23424
fl:TS_Pressure_PT23424 rdf:type owl:NamedIndividual ,
                                fl:TimeStampedMeasuredDataset ;
                       fl:indexedBySite fl:FL_PT23424_Site ;
                       fl:hasSeriesLabel "SAUIRIO.P-74-2342.2342-0982" ;
                       fl:storedAt "influxdb://p74/pressure/pt23424"^^xsd:anyURI ;
                       rdfs:comment "Abrange 10 anos e 3 substituições de sensor (2015-2025)."@pt-br ,
                                    "Spans 10 years and 3 sensor replacements (2015-2025)."@en ;
                       rdfs:label "Pressure Time Series PT-23424"@en ,
                                  "Série Temporal de Pressão PT-23424"@pt-br .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#Tag_PT23424
fl:Tag_PT23424 rdf:type owl:NamedIndividual ,
                        fl:EquipmentTag ;
               fl:identifiesLocation fl:FL_PT23424_Site ;
               rdfs:comment "Equipment tag denoting the functional location for a pressure transmitter. Does NOT denote any specific sensor instance."@en ,
                            "Tag de equipamento denotando o local de instalação para um transmissor de pressão. NÃO denota nenhuma instância específica de sensor."@pt-br ;
               rdfs:label "PT-23424"@en .


###  https://www.inf.ufrgs.br/ontologies/odp/functional-location#WorkOrder_2023_05_15
fl:WorkOrder_2023_05_15 rdf:type owl:NamedIndividual ,
                                 fl:MaintenanceNote ;
                        fl:performedAt fl:FL_PT23424_Site ;
                        fl:noteText "Pressure anomaly detected at PT-23424" ;
                        fl:noteTimestamp "2023-05-15T14:30:00"^^xsd:dateTime ;
                        rdfs:label "Maintenance Note 2023-05-15"@en ,
                                   "Nota de Manutenção 2023-05-15"@pt-br .


#################################################################
#    General axioms
#################################################################

[ rdf:type owl:AllDisjointClasses ;
  owl:members ( fl:EquipmentUnitSite
                fl:MaintainableItemSite
                fl:PlantSite
                fl:SubsystemSite
                fl:SystemSite
              )
] .

###  #GasLiquidSeparationFunction_1
fl:GasLiquidSeparationFunction_1 rdf:type owl:NamedIndividual ,
                                          fl:GasLiquidSeparationFunction ;
                                 rdfs:comment "Function required by the specification of the inlet separator position."@en ,
                                              "Função requerida pela especificação da posição do separador de entrada."@pt-br ;
                                 rdfs:label "Gas-Liquid Separation Function (V-23401)"@en .


###  #GasLiquidSeparationFunction_2
fl:GasLiquidSeparationFunction_2 rdf:type owl:NamedIndividual ,
                                          fl:GasLiquidSeparationFunction ;
                                 rdfs:comment "Function borne by the separator vessel currently installed at FL_V23401_Site."@en ,
                                              "Função portada pelo vaso separador atualmente instalado em FL_V23401_Site."@pt-br ;
                                 rdfs:label "Gas-Liquid Separation Function of Separator_V23401_v1"@en .


###  #FL_V23401_Site
fl:FL_V23401_Site rdf:type owl:NamedIndividual ,
                           fl:EquipmentUnitSite ;
                  fl:partOfSystemSite fl:InletSeparator_Site ;
                  fl:hasCoordinateX "144.8"^^xsd:double ;
                  fl:hasCoordinateY "66.5"^^xsd:double ;
                  fl:hasCoordinateZ "8.0"^^xsd:double ;
                  rdfs:comment "Equipment-unit-level functional location for the inlet separator vessel. Instantiates the ISO 14224 level 4 site class, completing the five-level hierarchy in the dataset."@en ,
                               "Local de instalação de nível de unidade de equipamento para o vaso separador de entrada. Instancia a classe de sítio do nível 4 da ISO 14224, completando a hierarquia de cinco níveis no conjunto de dados."@pt-br ;
                  rdfs:label "Functional Location for V-23401"@en ,
                             "Local de Instalação para V-23401"@pt-br .


###  #Code_V23401
fl:Code_V23401 rdf:type owl:NamedIndividual ,
                        fl:FunctionalLocationCode ;
               fl:identifies fl:FL_V23401_Site ;
               rdfs:comment "Functional location code for the inlet separator position (equipment unit level)."@en ;
               rdfs:label "30234.FSFS.FWSF.10.02"@en .


###  #Tag_V23401
fl:Tag_V23401 rdf:type owl:NamedIndividual ,
                       fl:EquipmentTag ;
              fl:identifiesLocation fl:FL_V23401_Site ;
              rdfs:comment "Equipment tag denoting the separator position. V prefix encodes pressure vessel. Does NOT denote any specific vessel instance."@en ;
              rdfs:label "V-23401"@en .


###  #Spec_V23401
fl:Spec_V23401 rdf:type owl:NamedIndividual ,
                        fl:FunctionalLocationSpecification ;
               fl:specifiesLocation fl:FL_V23401_Site ;
               fl:requiresFunction fl:GasLiquidSeparationFunction_1 ;
               rdfs:comment "Requires gas-liquid separation function; design pressure 90 bar; two-phase horizontal vessel."@en ,
                            "Requer função de separação gás-líquido; pressão de projeto 90 bar; vaso horizontal bifásico."@pt-br ;
               rdfs:label "Specification for V-23401"@en ,
                          "Especificação para V-23401"@pt-br .


###  #Separator_V23401_v1
fl:Separator_V23401_v1 rdf:type owl:NamedIndividual ,
                                fl:GasLiquidSeparator ;
                       fl:installedAt fl:FL_V23401_Site ;
                       fl:installedDate "2015-01-01T00:00:00"^^xsd:dateTime ;
                       <http://purl.obolibrary.org/obo/BFO_0000196> fl:GasLiquidSeparationFunction_2 ;
                       rdfs:comment "Currently installed (no removal date). Asserted as GasLiquidSeparator (primitive universal, COPPP-style); subsumption entails SeparationEquipment (and iof-constr:MaterialArtifact), supporting CQ6 retrieval. Bears a gas-liquid separation function matching the function required by Spec_V23401 — the prescriptive-realized correspondence queried in CQ6."@en ;
                       rdfs:label "Separator V-23401 v1"@en .

# ----------------------------------------------------------------------------
# CQ4 (verbatim): functional locations requiring gas-liquid separation
#
# SELECT ?loc WHERE {
#   ?spec a fl:FunctionalLocationSpecification ;
#         fl:specifiesLocation ?loc ;
#         fl:requiresFunction ?f .
#   ?f a fl:GasLiquidSeparationFunction .
# }
#
# CQ6 (verbatim): separation equipment + locations whose specs require its
# function kind (prescriptive-realized join; SeparationEquipment instances
# retrieved by subsumption from asserted GasLiquidSeparator typing)
#
# SELECT ?eq ?loc WHERE {
#   ?eq a fl:SeparationEquipment ;
#       <http://purl.obolibrary.org/obo/BFO_0000196> ?bf ;
#       fl:installedAt ?loc .
#   ?bf a ?fkind . ?fkind rdfs:subClassOf* fl:SeparationFunction .
#   ?spec fl:specifiesLocation ?loc ;
#         fl:requiresFunction ?rf .
#   ?rf a ?fkind .
# }
# ----------------------------------------------------------------------------

#################################################################
#    Camera-ready additions (FOIS 2026)
#    - DeckC delimiting structure (Sec 5.2 / 7.1)
#    - IOF Core alignment axioms (Sec 5.4 / Fig. 1 caption) -- FLAGGED
#    - Source-layer data exercised by CQ7 (Sec 7.2; src: namespace)
#    (V-23401 coordinates and the hierarchy fix were applied inline above.)
#################################################################

# ── Delimiting structure for the PT-23424 position (Sec 5.2 / 7.1) ───────────
# Instantiates the individual already named in the skos:example on
# fl:hasBoundaryDeterminedBy, giving the FunctionalLocation existential
# restriction (hasBoundaryDeterminedBy some BFO_0000030) a concrete filler and
# making the dataset match the paper's prose. Typed BFO_0000030 (Object) to
# satisfy the restriction range with certainty; also typed iof-constr:MaterialArtifact
# to match Sec 5.2's wording (subject to the same IRI check as the axioms below).
fl:DeckC_Structure rdf:type owl:NamedIndividual ,
                            <http://purl.obolibrary.org/obo/BFO_0000030> ,
                            iof-constr:MaterialArtifact ;
                   rdfs:label "Deck C mounting structure (PT-23424)"@en ,
                              "Estrutura de montagem do Deck C (PT-23424)"@pt-br ;
                   rdfs:comment "Aggregated mounting brackets, nozzle flanges, and deck frame that jointly delimit the PT-23424 transmitter position."@en ,
                                "Suportes de montagem, flanges de bocais e a estrutura do deck que conjuntamente delimitam a posição do transmissor PT-23424."@pt-br .

fl:FL_PT23424_Site fl:hasBoundaryDeterminedBy fl:DeckC_Structure .


# ── IOF Core 202602 alignment (Sec 5.4 and Fig. 1 caption) ─────────────────
# Verified against Release_202602: MaterialArtifact = iof-constr:MaterialArtifact
# iof-av: prefix updated to .../annotation/ (202602); maturity replaces maturityLevel;
# Provisional/Released moved to iof-ind: namespace. The IOF Maintenance dependency
# was decoupled into the optional extension odp-fl-maint.ttl (v0.7).

# Already entailed once BFO is imported (bfo:Site is immaterial, MaterialArtifact
# is material), asserted explicitly so the Fig. 1 caption "declared disjoint with
# iof:MaterialArtifact" is literally true in the artifact.
fl:FunctionalLocation owl:disjointWith iof-constr:MaterialArtifact .


# ── Source-layer data for CQ7 (NOT part of the ODP -- see Sec 7.2) ───────────
# Production events come from the source schemas the pattern integrates OVER, not
# from the ODP itself. Modeled in a separate 'src:' namespace so the boundary is
# explicit in the artifact: the shared fl:FunctionalLocation site is the ONLY join
# key between src: and fl:. If you keep this, update cqs/cq7.rq to query
# src:affectsLocation (add the src: PREFIX).
src:ProductionLossEvent rdf:type owl:Class ;
                        rdfs:label "Production loss event (source schema)"@en ;
                        rdfs:comment "Source-schema class, external to the Functional Location ODP. Included only to demonstrate cross-source integration via the shared site (CQ7)."@en .

src:affectsLocation rdf:type owl:ObjectProperty ;
                    rdfs:range fl:FunctionalLocation ;
                    rdfs:label "affects location"@en ;
                    rdfs:comment "Source-schema relation from a production event to the functional locations it affects. Not part of the ODP; the ODP contributes only the site as integration key."@en .

src:eventDate rdf:type owl:DatatypeProperty ;
              rdfs:range xsd:date ;
              rdfs:label "event date"@en .

src:E_2024_15 rdf:type owl:NamedIndividual ,
                       src:ProductionLossEvent ;
              src:affectsLocation fl:FL_PT23424_Site ,
                                  fl:FL_V23401_Site ;
              src:eventDate "2024-07-03"^^xsd:date ;
              rdfs:label "Production Loss Event E-2024-15"@en ;
              rdfs:comment "Pressure anomaly at PT-23424; associated separator V-23401 taken offline for inspection."@en .


###  Generated by the OWL API (version 4.5.29.2024-05-13T12:11:03Z) https://github.com/owlcs/owlapi
