# This file defines an ontology for S3000L issue No 1.1. from 2014-07-01 "International procedure specification for Logistics Support Analysis LSA"
# It uses higher level concept defined as defined in the ontology of ISO/CD 15925-12 (2015)

# @prefix lci:   <http://standards.iso.org/iso/15926/ontology/life-cycle-integration/> .
# @prefix s3kl:  <urn:publicid:%2B:IDN+lksoft.com:s3kl:> .
@prefix s3kl:  <http://www.lksoft.com/s3kl#> .
@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .

# <urn:publicid:%2B:IDN+lksoft.com:s3kl:ontology>
<http://www.lksoft.com/s3kl>
        rdf:type     owl:Ontology ;
        owl:versionInfo "0.32" .
# the linkage into the final ISO(/TS?) 15926-12 Ontology will be done by a seperate ontology
#        owl:imports  <http://standards.iso.org/iso/15926/-12/tech/ontology/collector-v-0.1> .


# ====== ISO 15926-12 stubs =======
s3kl:Individual
      rdf:type owl:Class .
[] a owl:AllDisjointClasses ;
  owl:members ( s3kl:Individual owl:Class ) .

s3kl:Activity
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:Individual .
s3kl:PhysicalObject
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:Individual .
s3kl:InformationObject
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:Individual .
[] a owl:AllDisjointClasses ;
  owl:members ( s3kl:Activity s3kl:PhysicalObject s3kl:InformationObject s3kl:Organization ) .

s3kl:MaterializedPhysicalObject
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:PhysicalObject .
s3kl:FunctionalPhysicalObject
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:PhysicalObject .
[] a owl:AllDisjointClasses ;
  owl:members ( s3kl:MaterializedPhysicalObject s3kl:FunctionalPhysicalObject ) .

s3kl:TypicalIndividual
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:Individual .
# s3kl:TypicalIndividual to be used in combination with 
# - s3kl:PhysicalObject
# - s3kl:FunctionalPhysicalObject
# - s3kl:Activity

# - replaces       rdfs:subClassOf s3kl:ClassOfPhysicalObject 
s3kl:ClassOfIndividual
      rdf:type owl:Class ;
      rdfs:subClassOf owl:Class , [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:Individual ] .   
s3kl:ClassOfInformationObject
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassOfIndividual ;
      rdfs:subClassOf owl:Class , [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:InformationObject ] .   
s3kl:InformationContent
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassOfInformationObject .
s3kl:RepresentationSpace
      rdf:type owl:Class .
[] a owl:AllDisjointClasses ;
  owl:members ( s3kl:ClassOfIndividual s3kl:RepresentationSpace ) .

s3kl:ClassOfPhysicalObject
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassOfIndividual , [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:PhysicalObject ] .   
[] a owl:AllDisjointClasses ;
  owl:members ( s3kl:ClassOfPhysicalObject s3kl:ClassOfInformationObject ) .

s3kl:DescriptionSpace
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:RepresentationSpace .
s3kl:IdentificationSpace
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:RepresentationSpace .
[] a owl:AllDisjointClasses ;
  owl:members ( s3kl:DescriptionSpace s3kl:IdentificationSpace ) .

s3kl:representationSpaceAssignedBy
      rdf:type owl:AnnotationProperty ;
      rdfs:domain s3kl:RepresentationSpace ;
      rdfs:range s3kl:Individual .

s3kl:hasPart
      rdf:type owl:TransitiveProperty , owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:Individual ;
      rdfs:range s3kl:Individual .

s3kl:partOf
      rdf:type owl:ObjectProperty , owl:TransitiveProperty ;
      owl:inverseOf s3kl:hasPart .

s3kl:after
      rdf:type owl:TransitiveProperty , owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:Individual ;
      rdfs:range s3kl:Individual .

#====================================

# members of class s3kl:ClassS3000L are classes directly defined in S3000L
s3kl:ClassS3000L
	a owl:Class .
	
# members of class s3kl:PropertyS3000L are properties directly defined in S3000L; either as class or as relationship
s3kl:PropertyS3000L
	a owl:Class .
#====================================


# the basic sub-classes of s3kl:TypicalIndividual are all disjoint
[] a owl:AllDisjointClasses ;
  owl:members ( s3kl:Product s3kl:ProductVariant s3kl:Breakdown s3kl:BreakdownElement s3kl:BreakdownElementRevision) .


# general string properties

# S3000L v1.1 2.3.4 IdentifierType / identifier
# - s3kl:id is for a normal identifier, s3kl:vid for a version or variant identifier
# see further down: s3kl:identifierSetBy
s3kl:IdentifierType
      rdf:type owl:Class , s3kl:IdentificationSpace , s3kl:ClassS3000L .
s3kl:id
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:range xsd:string .
s3kl:vid
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:range xsd:string .

s3kl:xsdCode
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:range xsd:string .

# S3000L v1.1 2.3.5 DescriptorType / descriptor & descriptorLanguage
# - s3kl:name is for a normal name, s3kl:vname for a version or variant name, s3kl:description for all kind of descriptions
# - descriptorLanguage is covered by the datatype rdf:PlainLiteral that allows a language tag; e.g.: "Bill"@en
s3kl:DescriptorType
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:sameAs s3kl:DescriptionSpace .
s3kl:name
      rdf:type owl:DatatypeProperty , s3kl:DescriptorType ;
      rdfs:range rdf:PlainLiteral .
s3kl:vname
      rdf:type owl:DatatypeProperty , s3kl:DescriptorType ;
      rdfs:subPropertyOf s3kl:name .
s3kl:description
      rdf:type owl:DatatypeProperty , s3kl:DescriptorType ;
      rdfs:range rdf:PlainLiteral .

# S3000L v1.1 2.3.6 ClassificationType
s3kl:ClassificationType
      rdf:type owl:Class .

# - e.g. "1970-01-01T00:00:00-02:00"^^xsd:dateTime
s3kl:dateTimeProperty
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:range xsd:dateTime .

s3kl:dateProperty
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:range xsd:date .

# S3000L v1.1 2.3.7.1 PropertyType
# - Note: use blank node
s3kl:PropertyType
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:disjointUnionOf ( s3kl:NumericalPropertyType s3kl:TextPropertyType ) .
s3kl:property
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:range s3kl:PropertyType .

# S3000L v1.1 2.3.7.2 NumericalPropertyType
s3kl:NumericalPropertyType
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:PropertyType ;
      owl:disjointUnionOf ( s3kl:SingleValuePropertyType s3kl:ValueWithTolerancesPropertyType s3kl:ValueRangePropertyType ) .

# S3000L v1.1 2.3.7.3 SingleValuePropertyType
s3kl:SingleValuePropertyType
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:NumericalPropertyType .

# S3000L v1.1 2.3.7.4 ValueWithTolerancesPropertyType
s3kl:ValueWithTolerancesPropertyType
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:NumericalPropertyType .
      
# S3000L v1.1 2.3.7.5 ValueRangePropertyType
s3kl:ValueRangePropertyType
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:NumericalPropertyType .

# S3000L v1.1 2.3.7.6 TextProperty
s3kl:TextPropertyType
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:PropertyType .

s3kl:integerProperty
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:range xsd:integer .

s3kl:booleanProperty
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:range xsd:boolean .


# rdfs:subPropertyOf of this are defined to represent UML composition with filled diamond which is representing ownership
# A subject can have at most one s3kl:ownedBy property; so this is a functional property.
s3kl:ownedBy
      rdf:type owl:ObjectProperty , owl:FunctionalProperty .

# S3000L v1.1 2.4.3 SerialNumberRange
# - ??? create always blank nodes (no identify)
s3kl:SerialNumberRange
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:lowerBound ; 
          owl:cardinality 1 ] . 
# lowerBound
s3kl:lowerBound
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:SerialNumberRange ;
      rdfs:range xsd:string .
# upperBound
s3kl:upperBound
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:SerialNumberRange ;
      rdfs:range xsd:string .

# S3000L v1.1 2.4.4 DatedClassification
# target for properties
# - failureModeDetectionAbilityRating
# - failureModeLocalizationAbilityRating
# - partDemilitarizationClass
# - partMaturityClass
# - technologyBehaviourKnowledgeRating
# - technologySensitivityRating
# and 
# - s3kl:RemarkAssignmentItem
# Create subclasses of specific ClassificationTypes and add s3kl:dateTimeProperty
s3kl:DatedClassification
      rdf:type owl:Class , s3kl:ClassS3000L .

# S3000L v1.1 2.4.5 AuthorizedLife
s3kl:AuthorizedLife
      rdf:type owl:Class , s3kl:ClassS3000L .
s3kl:authorizedLife
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:AuthorizedLife ;
      rdfs:subPropertyOf s3kl:property .
s3kl:lifeAuthorizingOrganization
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:AuthorizedLife ;
      rdfs:range s3kl:Organization .



#=================================================================================

# S3000L v1.1 ========== 4.1 UOF Product and Project ==========
# S3000L v1.1 4.1.3.1 Project
s3kl:Project
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:hasKey ( s3kl:id ) ;
      rdfs:subClassOf s3kl:Activity , [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:contractContext ; 
          owl:minCardinality 1 ] .   
 
# S3000L v1.1 4.1.3.2 ContractContext <<relationship>>
s3kl:contractContext                    	 
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:Project ;
      rdfs:range s3kl:Contract .

# S3000L v1.1 4.1.3.3 Contract
s3kl:Contract
      rdf:type owl:Class , s3kl:DocumentType , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:InformationObject ;
      owl:hasKey ( s3kl:id ) .

# S3000L v1.1 4.1.3.4 ContractRelationship <<relationship>>)
# - PUNNING: subProperties of s3kl:contractRelationship to be of type s3kl:ContractRelationship
# -          needed for s3kl:RemarkAssignmentItem
s3kl:contractRelationship                    	 
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:Contract ;  
      rdfs:range s3kl:Contract .   
s3kl:ContractRelationship
      rdf:type owl:Class ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:contractRelationship ] .

# S3000L v1.1 * 4.1.3.5 Organization
s3kl:Organization
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:Individual ;
      owl:hasKey ( s3kl:id ) .

# S3000L v1.1 4.1.3.6 Contractor <<interface>>
#   skip, this is only a role for an Organization

# S3000L v1.1 4.1.3.7 ContractContractor <<relationship>> (Req)
s3kl:contractContractor                    	 
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:Contract ;  
      rdfs:range s3kl:Organization .   

# S3000L v1.1 4.1.3.8 Customer <<interface>>
#   skip, this is only a role for an Organization

# S3000L v1.1 4.1.3.9 ContractCustomer <<relationship>> (Req)
s3kl:contractCustomer                    	 
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:Contract ;  
      rdfs:range s3kl:Organization .   

# S3000L v1.1 4.1.3.10 User <<interface>>
#   skip, this is only a role for an Organization

# S3000L v1.1 4.1.3.11 UserCustomerContext <<relationship>>
s3kl:userCustomerContext                    	 
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:Organization ;  
      rdfs:range s3kl:Organization .   

# S3000L v1.1 4.1.3.12 UserOfContractedProductVariant <<relationship>>
s3kl:userOfContractedProductVariant                    	 
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:ContractedProductVariant ;  
      rdfs:range s3kl:Organization .   

# S3000L v1.1 4.1.3.13 ContractedProductVariant <<relationship>>
s3kl:ContractedProductVariant
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:contractedProductVariantRelated ; 
          owl:cardinality 1 ] ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:contractedProductVariantRelating ; 
          owl:cardinality 1 ] .
s3kl:contractedProductVariantRelated
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:ContractedProductVariant ;
      rdfs:range s3kl:ProductVariant .
s3kl:contractedProductVariantRelating
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:ContractedProductVariant ;
      rdfs:range s3kl:Contract .

# S3000L v1.1 * 4.1.3.14 Product
s3kl:Product
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:TypicalIndividual , s3kl:PhysicalObject ;
      owl:hasKey ( s3kl:id ) .

# S3000L v1.1 * 4.1.3.15 ProductVariant
s3kl:ProductVariant
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:TypicalIndividual , s3kl:PhysicalObject  ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:productVariantOwnedBy ; 
          owl:minCardinality 1 ] ;
      owl:hasKey ( s3kl:vid s3kl:productVariantOwnedBy ) .
s3kl:productVariantOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:ProductVariant ;
      rdfs:range s3kl:Product .

# S3000L v1.1 ========== 4.2 UOF Product Usage Context ==========
# S3000L v1.1 4.2.3.1 Operator <<interface>>
# - skipped as it is only the role of an s3kl:Organization

# S3000L v1.1 4.2.3.2 MaintenanceLevel
s3kl:MaintenanceLevel
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:hasKey ( s3kl:id ) .

# S3000L v1.1 4.2.3.3 MaintenanceLocation
s3kl:MaintenanceLocation
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:maintenanceCapability ; 
          owl:minCardinality 1 ] ;
      owl:hasKey ( s3kl:id ) .
s3kl:maintenanceCapability
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:MaintenanceLocation ;
      rdfs:range s3kl:MaintenanceLevel .

# S3000L v1.1 4.2.3.4 OperatorMaintenanceLevel <<relationship>> (Req)
s3kl:operatorMaintenanceLevel
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:MaintenanceLevel ;
      rdfs:range s3kl:Organization .

# S3000L v1.1 4.2.3.5 OperatorMaintenanceLocation <<relationship>>
s3kl:operatorMaintenanceLocation
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:MaintenanceLocation ;
      rdfs:range s3kl:Organization .

# S3000L v1.1 4.2.3.6 OperatingLocationType
s3kl:OperatingLocationType
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:hasKey ( s3kl:id ) .
s3kl:operatorLocationType
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:OperatingLocationType ;
      rdfs:range s3kl:Organization .

# S3000L v1.1 4.2.3.7 OperatingLocation
s3kl:OperatingLocation
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:hasKey ( s3kl:id ) .
s3kl:operatingCapability
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:OperatingLocation ;
      rdfs:range s3kl:OperatingLocationType .
s3kl:operatorLocation
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:OperatingLocation ;
      rdfs:range s3kl:Organization .

# S3000L v1.1 4.2.3.8 MaintenanceCapabilityAtOperatingLocationType <<relationship>> (req)
s3kl:maintenanceCapabilityAtOperatingLocationType
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:OperatingLocationType ;
      rdfs:range s3kl:MaintenanceLevel .

# S3000L v1.1 4.2.3.9 ContractedProductVariantAtOperatingLocationType <<relationship>>
# - PUNNING: subProperties of s3kl:contractedProductVariantAtOperatingLocationType to be of type s3kl:ContractedProductVariantAtOperatingLocationType
# -          needed for s3kl:RemarkAssignmentItem, s3kl:operatingRequirementAtOperatingLocationTypeString, s3kl:quantityOfProductVariantAtOperatingLocationTypeString
s3kl:contractedProductVariantAtOperatingLocationType
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:ContractedProductVariant ;
      rdfs:range s3kl:OperatingLocationType .
s3kl:ContractedProductVariantAtOperatingLocationType
      rdf:type owl:Class ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:contractedProductVariantAtOperatingLocationType ] .

# S3000L v1.1 4.2.3.10 ContractedProductVariantAtOperatingLocation <<relationship>>
# - PUNNING: subProperties of s3kl:contractedProductVariantAtOperatingLocation to be of type s3kl:ContractedProductVariantAtOperatingLocation
# -          needed for s3kl:RemarkAssignmentItem,  s3kl:operatingRequirementAtOperatingLocationString, s3kl:quantityOfProductVariantAtOperatingString
s3kl:contractedProductVariantAtOperatingLocation
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:ContractedProductVariant ;
      rdfs:range s3kl:OperatingLocation .
s3kl:ContractedProductVariantAtOperatingLocation
      rdf:type owl:Class ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:contractedProductVariantAtOperatingLocation ] .

# S3000L v1.1 ========== 4.3 UOF Breakdown Structure ==========
# S3000L v1.1 4.3.3.1 Breakdown
s3kl:Breakdown
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:TypicalIndividual , s3kl:PhysicalObject ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:breakdownOwnedBy ; 
          owl:cardinality 1 ] ;
      owl:hasKey ( s3kl:breakdownOwnedBy rdf:type ) .
s3kl:breakdownOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:Breakdown ;
      rdfs:range s3kl:BreakdownItem .

# S3000L v1.1 4.3.3.2 BreakdownItem <<interface>>
s3kl:BreakdownItem
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:unionOf ( s3kl:Product s3kl:ProductVariant  ) .

# S3000L v1.1 4.3.3.3 BreakdownRevision
s3kl:BreakdownRevision
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:breakdownRevisionOwnedBy ; 
          owl:cardinality 1 ] ;
      owl:hasKey ( s3kl:vid s3kl:breakdownRevisionOwnedBy ) .
s3kl:breakdownRevisionOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:BreakdownRevision ;
      rdfs:range s3kl:Breakdown .

# S3000L v1.1 4.3.3.4 BreakdownElementUsageInBreakdown <<relationship>> (Req)
s3kl:BreakdownElementUsageInBreakdown
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:breakdownElementUsageInBreakdownRelated ; 
          owl:cardinality 1 ] ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:breakdownElementUsageInBreakdownRelating ; 
          owl:cardinality 1 ] ; # could be relaxed to >=1
      owl:hasKey ( s3kl:breakdownElementUsageInBreakdownRelated s3kl:breakdownElementUsageInBreakdownRelating ) .
s3kl:breakdownElementUsageInBreakdownRelated
      rdf:type owl:ObjectProperty , owl:FunctionalProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:BreakdownElementUsageInBreakdown ;
      rdfs:range s3kl:BreakdownElementRevision . 
s3kl:breakdownElementUsageInBreakdownRelating
      rdf:type owl:ObjectProperty , owl:FunctionalProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:BreakdownElementUsageInBreakdown ;
      rdfs:range s3kl:BreakdownRevision . 

# S3000L v1.1 4.3.3.5 BreakdownElementStructure <<relationship>>
# - Note: referenceDesignator and quantityOfChildElement are moved to BreakdownElementUsageInBreakdown
#         This is possible as a BreakdownElementUsageInBreakdown can have only one BreakdownElementStructure as child. 
s3kl:breakdownElementStructure
      rdf:type owl:ObjectProperty , owl:InverseFunctionalProperty , s3kl:PropertyS3000L ; 
      rdfs:domain s3kl:BreakdownElementUsageInBreakdown ;
      rdfs:range s3kl:BreakdownElementUsageInBreakdown . 
s3kl:breakdownElementParent
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ; 
      rdfs:subPropertyOf s3kl:ownedBy ;
      owl:inverseOf s3kl:breakdownElementStructure ;
      rdfs:domain s3kl:BreakdownElementUsageInBreakdown ;
      rdfs:range s3kl:BreakdownElementUsageInBreakdown . 

# S3000L v1.1 4.3.3.6 BreakdownElementStructureRelationship <<relationship>>
# - Note: BreakdownElementStructureRelationship is realized as an ObjectProperty between two BreakdownElementUsageInBreakdown 
# -       instead of two BreakdownElementStructure. This is possible because a BreakdownElementUsageInBreakdown can be used 
# -       by only one (or none) BreakdownElementStructure as "child". So this is equivalent.
s3kl:breakdownElementStructureRelationship
      rdf:type owl:ObjectProperty , owl:FunctionalProperty , s3kl:PropertyS3000L ; 
      rdfs:domain s3kl:BreakdownElementUsageInBreakdown ;
      rdfs:range s3kl:BreakdownElementUsageInBreakdown . 
s3kl:BreakdownElementStructureRelationship
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:breakdownElementStructureRelationship ] .

# S3000L v1.1 4.3.3.7 BreakdownElement
s3kl:BreakdownElement
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:TypicalIndividual , s3kl:FunctionalPhysicalObject ;
      owl:hasKey ( s3kl:id ) .

# S3000L v1.1 4.3.3.8 BreakdownElementRevision
s3kl:BreakdownElementRevision
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:TypicalIndividual , s3kl:FunctionalPhysicalObject ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:breakdownElementRevisionOwnedBy ; 
          owl:cardinality 1 ] ;
      owl:hasKey ( s3kl:vid s3kl:breakdownElementRevisionOwnedBy ) .
s3kl:breakdownElementRevisionOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:BreakdownElementRevision ;
      rdfs:range s3kl:BreakdownElement .

# S3000L v1.1 4.3.3.9 BreakdownElementRevisionRelationship <<relationship>>
# - PUNNING: subProperties of s3kl:breakdownElementRevisionRelationship to be of type s3kl:BreakdownElementRevisionRelationship
# -          needed for s3kl:RemarkAssignmentItem
s3kl:breakdownElementRevisionRelationship
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:BreakdownElementRevision ;
      rdfs:range s3kl:BreakdownElementRevision . 
s3kl:BreakdownElementRevisionRelationship
      rdf:type owl:Class ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:breakdownElementRevisionRelationship ] .

# S3000L v1.1 ========== 4.4 UOF Part Definition ==========
# S3000L v1.1 4.4.3.1 PartAsDesigned
s3kl:PartAsDesigned
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:TypicalIndividual , s3kl:PhysicalObject ;
      owl:hasKey ( s3kl:id ) .
s3kl:PartAsDesignedDesignData
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:PartAsDesigned .
s3kl:PartAsDesignedSupportData
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:PartAsDesigned .
s3kl:PartAsDesignedControlledItemData
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:PartAsDesigned .

s3kl:PartOccurrence
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:TypicalIndividual , s3kl:FunctionalPhysicalObject ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:partOccurrenceDefinition ; 
          owl:cardinality 1 ] .   
s3kl:partOccurrenceDefinition                    	 
      rdf:type owl:ObjectProperty , owl:FunctionalProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:PartOccurrence ;
      rdfs:range s3kl:PartAsDesigned .
# - note that "child relationship between s3kl:PartAsDesignedPartsList and s3kl:PartAsDesigned is covered by s3kl:partOccurrenceDefinition

# S3000L v1.1 4.4.3.2 AlternatePartAsDesignedRelationship <<relationship>> (Req)
# - PUNNING: subProperties of s3kl:alternatePartAsDesignedRelationship to be of type s3kl:AlternatePartAsDesignedRelationship
# -          needed for s3kl:DocumentAssignmentItem, s3kl:RemarkAssignmentItem, s3kl:ApplicabilityAssignmentItem
s3kl:alternatePartAsDesignedRelationship
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:PartAsDesigned ;
      rdfs:range s3kl:PartAsDesigned . 
s3kl:AlternatePartAsDesignedRelationship
      rdf:type owl:Class ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:alternatePartAsDesignedRelationship ] .

# S3000L v1.1 4.4.3.3 PartAsDesignedPartsList
s3kl:PartAsDesignedPartsList
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:TypicalIndividual , s3kl:FunctionalPhysicalObject ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:partAsDesignedPartsListOwnedBy ; 
          owl:cardinality 1 ] ;
      owl:hasKey ( s3kl:id s3kl:partAsDesignedPartsListOwnedBy ) .
s3kl:partAsDesignedPartsListOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:PartAsDesignedPartsList ;
      rdfs:range s3kl:PartAsDesigned . 

# S3000L v1.1 4.4.3.4 PartAsDesignedPartListEntry
s3kl:PartAsDesignedPartsListEntry
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:PartOccurrence ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:partListEntryParent ; 
          owl:cardinality 1 ] ;   
      owl:hasKey ( s3kl:id s3kl:partListEntryParent ) .
s3kl:partListEntryParent
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:PartAsDesignedPartsListEntry ;
      rdfs:range s3kl:PartAsDesignedPartsList . 
# - Note: for "cild" relationship to s3kl:PartAsDesigned use s3kl:partOccurrenceDefinition

# S3000L v1.1 4.4.3.5 SubstitutePartAsDesignedRelationship <<relationship>> (Req)
# - PUNNING: subProperties of s3kl:substitutePartAsDesignedRelationship to be of type s3kl:SubstitutePartAsDesignedRelationship
# -          needed for s3kl:RemarkAssignmentItem
s3kl:substitutePartAsDesignedRelationship
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:PartAsDesignedPartsListEntry ;
      rdfs:range s3kl:PartAsDesignedPartsListEntry . 
s3kl:SubstitutePartAsDesignedRelationship
      rdf:type owl:Class ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:substitutePartAsDesignedRelationship ] .

# S3000L v1.1 4.4.3.6 HardwarePartAsDesigned (Req)2x
s3kl:HardwarePartAsDesigned
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:PartAsDesigned .
s3kl:HardwarePartAsDesignedDesignData
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:HardwarePartAsDesigned .
s3kl:HardwarePartAsDesignedSupportData
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:HardwarePartAsDesigned .

# Not defined in S3000L, introduced to make things consistent and be able to bridge to STEP
s3kl:HardwarePartOccurrence
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:PartOccurrence ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:partOccurrenceDefinition ; 
          owl:someValuesFrom s3kl:HardwarePartAsDesigned ] .   

# S3000L v1.1 4.4.3.7 SubstanceDefinition
s3kl:SubstanceDefinition
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:hasKey ( s3kl:id ) .

# S3000L v1.1 4.4.3.8 ContainedSubstance <<relationship>>
# - Note: ContainedSubstance is treated as an occurrence of SubstanceDefinition, not as a relation !
s3kl:ContainedSubstance
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:ClassOfPhysicalObject ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:containedSubstanceRelated ; 
          owl:cardinality 1 ] ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:containedSubstanceRelating ; 
          owl:cardinality 1 ] .   
s3kl:containedSubstanceRelated
      rdf:type owl:ObjectProperty , owl:FunctionalProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:ContainedSubstance ;
      rdfs:range s3kl:SubstanceDefinition .
s3kl:containedSubstanceRelating
      rdf:type owl:ObjectProperty , owl:FunctionalProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:ContainedSubstance ;
      rdfs:range s3kl:HardwarePartAsDesigned .

# S3000L v1.1 4.4.3.9 SoftwarePartAsDesigned (Req)2x
s3kl:SoftwarePartAsDesigned
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:PartAsDesigned .
s3kl:SoftwarePartAsDesignedDesignData
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:SoftwarePartAsDesigned .

# not defined in S3000L
s3kl:SoftwarePartOccurrence
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:PartOccurrence ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:partOccurrenceDefinition ; 
          owl:someValuesFrom s3kl:SoftwarePartAsDesigned ] .   

# S3000L v1.1 ========== 4.5 UOF Breakdown Element Realization ==========
# S3000L v1.1 4.5.3.1 HardwareElement (Equipment)
s3kl:HardwareElement
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:BreakdownElement .

# S3000L v1.1 4.5.3.2 HardwareElementRevision
s3kl:HardwareElementRevision
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:BreakdownElementRevision ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:breakdownElementRevisionOwnedBy ; 
          owl:someValuesFrom s3kl:HardwareElement ] .

# S3000L v1.1 4.5.3.3 HardwareElementPartRealization <<relationship>> (Req)
# - UML class HardwareElementPartRealization is covered by s3kl:HardwarePartOccurrence
# - association "relating" is covered by s3kl:hardwareElementPartRealization
# - association "related" is covered by s3kl:partOccurrenceDefinition
s3kl:hardwareElementPartRealization
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:HardwareElementRevision ;
      rdfs:range s3kl:HardwarePartOccurrence . 

# S3000L v1.1 4.5.3.4 SoftwareElement
s3kl:SoftwareElement
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:BreakdownElement .

# S3000L v1.1 4.5.3.5 SoftwareElementRevision
s3kl:SoftwareElementRevision
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:BreakdownElementRevision ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:breakdownElementRevisionOwnedBy ; 
          owl:someValuesFrom s3kl:SoftwareElement ] .

# S3000L v1.1 4.5.3.6 SoftwareElementPartRealization <<relationship>> (Req)
# - UML class SoftwareElementPartRealization is covered by s3kl:SoftwarePartOccurrence
# - association "relating" is covered by s3kl:softwareElementPartRealization
# - association "related" is covered by s3kl:partOccurrenceDefinition
s3kl:softwareElementPartRealization
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:SoftwareElementRevision ;
      rdfs:range s3kl:SoftwarePartOccurrence . 

# S3000L v1.1 ========== 4.6 UOF Breakdown Zone Element ==========
# S3000L v1.1 4.6.3.1 ZoneElement
s3kl:ZoneElement
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:BreakdownElement .

# S3000L v1.1 4.6.3.2 ZoneElementRevision
s3kl:ZoneElementRevision
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:BreakdownElementRevision ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:breakdownElementRevisionOwnedBy ; 
          owl:someValuesFrom s3kl:ZoneElement ] .

# S3000L v1.1 4.6.3.3 BreakdownElementInZoneRelationship <<relationship>>
# - PUNNING: subProperties of s3kl:breakdownElementInZoneRelationship to be of type s3kl:BreakdownElementInZoneRelationship
# -          needed for s3kl:DocumentAssignmentItem, s3kl:RemarkAssignmentItem
s3kl:breakdownElementInZoneRelationship
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:BreakdownElementUsageInBreakdown ;
      rdfs:range s3kl:BreakdownElementUsageInBreakdown . 
s3kl:BreakdownElementInZoneRelationship
      rdf:type owl:Class ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:breakdownElementInZoneRelationship ] .

# S3000L v1.1 ========== 4.7 UOF Breakdown Aggregated Element ==========
# S3000L v1.1 4.7.3.1 AggregatedElement
s3kl:AggregatedElement
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:BreakdownElement .

# S3000L v1.1 4.7.3.2 AggregatedElementRevision
s3kl:AggregatedElementRevision
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:BreakdownElementRevision ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:breakdownElementRevisionOwnedBy ; 
          owl:someValuesFrom s3kl:AggregatedElement ] .

# S3000L v1.1 ========== 4.8 UOF Product Design Configuration ==========
# S3000L v1.1 4.8.3.1 ItemInProductVariant <<relationship>> (Req)
s3kl:itemInProductVariant                    	 
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:ProductVariant ;
      rdfs:range s3kl:ProductVariantItem .

# S3000L v1.1 4.8.3.2 ProductVariantItem <<interface>>
# - NOTE: HardwareElementPartRealization replaced by s3kl:HardwarePartOccurrence
# - NOTE: SoftwareElementPartRealization replaced by s3kl:SoftwarePartOccurrence
s3kl:ProductVariantItem
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:unionOf ( s3kl:HardwarePartOccurrence s3kl:SoftwarePartOccurrence s3kl:BreakdownElementUsageInBreakdown ) .

# S3000L v1.1 4.8.3.3 NestedProductVariantRelationship <<relationship>>
# - PUNNING: subProperties of s3kl:nestedProductVariantRelationship to be of type s3kl:NestedProductVariantRelationship
# -          needed for s3kl:RemarkAssignmentItem
s3kl:nestedProductVariantRelationship
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:partOf ;
      rdfs:domain s3kl:ProductVariant ;
      rdfs:range s3kl:ProductVariant . 
s3kl:NestedProductVariantRelationship
      rdf:type owl:Class ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:nestedProductVariantRelationship ] .

# S3000L v1.1 4.8.3.4 AllowedProductConfiguration <<interface>>
s3kl:AllowedProductConfiguration
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:unionOf ( s3kl:AllowedProductConfigurationHardwarePartAsDesigned s3kl:AllowedProductConfigurationByConfigurationIdentifier ) ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:allowedProductConfigurationOwnedBy ; 
          owl:cardinality 1 ] .   
s3kl:allowedProductConfigurationOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:AllowedProductConfiguration ;
      rdfs:range s3kl:ProductVariant .

# S3000L v1.1 4.8.3.5 NestedAllowedProductConfigurationRelationship <<relationship>>
# - PUNNING: subProperties of s3kl:nestedAllowedProductConfigurationRelationship to be of type s3kl:NestedAllowedProductConfigurationRelationship
# -          needed for s3kl:RemarkAssignmentItem
s3kl:nestedAllowedProductConfigurationRelationship
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:AllowedProductConfiguration ;
      rdfs:range s3kl:AllowedProductConfiguration . 
s3kl:NestedAllowedProductConfigurationRelationship
      rdf:type owl:Class ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:nestedAllowedProductConfigurationRelationship ] .

# S3000L v1.1 4.8.3.6 AuthorityToOperate
s3kl:AuthorityToOperate
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:authorityToOperateOwnedBy ; 
          owl:cardinality 1 ] ;
      owl:hasKey ( s3kl:id ) .
s3kl:authorityToOperateOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:AuthorityToOperate ;
      rdfs:range s3kl:AllowedProductConfiguration .

# S3000L v1.1 4.8.3.7 AllowedProductConfigurationHardwarePartAsDesigned
s3kl:AllowedProductConfigurationHardwarePartAsDesigned
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:HardwarePartAsDesigned .

# S3000L v1.1 4.8.3.8 AllowedProductConfigurationByConfigurationIdentifier
s3kl:AllowedProductConfigurationByConfigurationIdentifier
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:hasKey ( s3kl:id ) .

# S3000L v1.1 4.8.3.9 ItemInAllowedProductConfiguration <<relationship>> (Req)
# - Note: By adding Occurrences, the relations from NonConformanceData and SerialNumberApplicabilityItem are moved to AllowedProductConfigurationItem
# - PUNNING: subProperties of s3kl:itemInAllowedProductConfiguration to be of type s3kl:ItemInAllowedProductConfiguration
# -          needed for s3kl:DocumentAssignmentItem, s3kl:RemarkAssignmentItem
s3kl:itemInAllowedProductConfiguration
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:AllowedProductConfiguration ;
      rdfs:range s3kl:AllowedProductConfigurationItem .
s3kl:ItemInAllowedProductConfiguration
      rdf:type owl:Class ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:itemInAllowedProductConfiguration ] .

# S3000L v1.1 4.8.3.10 NonConformanceData
# - Note: Ownership changed from ItemInAllowedProductConfiguration to AllowedProductConfigurationItem
s3kl:NonConformanceData
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:nonConformanceDataOwnedBy ; 
          owl:cardinality 1 ] .   
s3kl:nonConformanceDataOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:NonConformanceData ;
      rdfs:range s3kl:AllowedProductConfigurationItem .

# S3000L v1.1 4.8.3.11 AllowedProductConfigurationItem <<interface>>
# - NOTE: HardwareElementPartRealization replaced by s3kl:HardwarePartOccurrence
# - NOTE: SoftwareElementPartRealization replaced by s3kl:SoftwarePartOccurrence
s3kl:AllowedProductConfigurationItem
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:unionOf ( s3kl:PartAsDesignedPartsList s3kl:PartAsDesignedPartsListEntry s3kl:HardwarePartOccurrence s3kl:SoftwarePartOccurrence ) .

# S3000L v1.1 4.8.3.12 SerialNumberApplicabilityItem <<interface>>
# - Note: ItemInProductVariant changed to ProductVariantItem (because of introduced occurrence concept)
# - Note: ItemInAllowedProductConfiguration changed to AllowedProductConfigurationItem (because of introduced occurrence concept)
s3kl:SerialNumberApplicabilityItem
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:unionOf ( s3kl:ProductVariantItem s3kl:AllowedProductConfigurationItem ) .

# S3000L v1.1 4.8.3.13 AppliableBlockOfSerializedEndItems
s3kl:AppliableBlockOfSerializedEndItems
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:appliableBlockOfSerializedEndItemsOwnedBy ; 
          owl:cardinality 1 ] .   
s3kl:appliableBlockOfSerializedEndItemsOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:AppliableBlockOfSerializedEndItems ;
      rdfs:range s3kl:SerialNumberApplicabilityItem .

# S3000L v1.1 ========== 4.9 UOF LSA candidate ==========
# S3000L v1.1 4.9.3.1 LSACandidate <<interface>>
s3kl:LSACandidate
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:unionOf ( s3kl:BreakdownElementRevision s3kl:PartAsDesigned ) .

# S3000L v1.1 4.9.3.2 KeyPerformanceIndicator
s3kl:KeyPerformanceIndicator
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:keyPerformanceIndicatorOwnedBy ; 
          owl:cardinality 1 ] .   
s3kl:keyPerformanceIndicatorOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:KeyPerformanceIndicator ;
      rdfs:range s3kl:LSACandidate .

# S3000L v1.1 4.9.3.3 ProductServiceLife
s3kl:ProductServiceLife
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:KeyPerformanceIndicator .

# S3000L v1.1 4.9.3.4 ScheduledMaintenanceInterval
s3kl:ScheduledMaintenanceInterval
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:KeyPerformanceIndicator .

# S3000L v1.1 4.9.3.5 MaintenanceFeeOperatingPeriod
s3kl:MaintenanceFreeOperatingPeriod
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:KeyPerformanceIndicator .

# S3000L v1.1 4.9.3.6 DownTime
s3kl:DownTime
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:KeyPerformanceIndicator .

# S3000L v1.1 4.9.3.7 MaintenanceManHoursPerOperatingHour
s3kl:MaintenanceManHoursPerOperatingHour
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:KeyPerformanceIndicator .

# S3000L v1.1 4.9.3.8 MeanTimeBetweenUnscheduledRemoval
s3kl:MeanTimeBetweenUnscheduledRemoval
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:KeyPerformanceIndicator .

# S3000L v1.1 4.9.3.9 MeanTimeToRepair
s3kl:MeanTimeToRepair
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:KeyPerformanceIndicator .

# S3000L v1.1 4.9.3.10 DirectMaintenanceCost
s3kl:DirectMaintenanceCost
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:KeyPerformanceIndicator .

# S3000L v1.1 4.9.3.11 ShopProcessingTime
s3kl:ShopProcessingTime
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:KeyPerformanceIndicator .

# S3000L v1.1 4.9.3.12 FailuresPerOperatingHour
s3kl:FailuresPerOperatingHour
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:KeyPerformanceIndicator .

# S3000L v1.1 4.9.3.13 ReplacementTime
s3kl:ReplacementTime
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:KeyPerformanceIndicator .

# S3000L v1.1 4.9.3.14 LifeCycleCost
s3kl:LifeCycleCost
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:KeyPerformanceIndicator .

# S3000L v1.1 4.9.3.15 MeanTimeBetweenFailure
s3kl:MeanTimeBetweenFailure
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:KeyPerformanceIndicator .

# S3000L v1.1 4.9.3.16 FailureRate
s3kl:FailureRate
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:KeyPerformanceIndicator .

# S3000L v1.1 4.9.3.17 CorrectionFactor
s3kl:CorrectionFactor
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:correctionFactorOwnedBy ; 
          owl:minCardinality 1 ] .   
s3kl:correctionFactorOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:CorrectionFactor ;
      rdfs:range [
        owl:unionOf ( s3kl:FailureRate s3kl:MeanTimeBetweenFailure ) ] .

# S3000L v1.1 ========== 4.10 UOF LSA Candidate Analysis Activity ==========
# S3000L v1.1 4.10.3.1 CandidateItemAnalysisActivity
s3kl:CandidateItemAnalysisActivity
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:Activity ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:candidateItemAnalysisActivityOwnedBy ; 
          owl:cardinality 1 ] ;
      owl:disjointUnionOf ( s3kl:LSACandidateComparativeAnalysisActivity s3kl:LSACandidateHumanFactorAnalysisActivity s3kl:LSACandidateReliabilityAnalysisActivity s3kl:LSACandidateMaintainabilityAnalysisActivity s3kl:LSACandidateTestabilityAnalysisActivity s3kl:LSACandidateFailureModeAndEffectAnalysisActivity s3kl:LSACandidateDamageAnalysisActivity s3kl:LSACandidateSpecialEventAnalysisActivity s3kl:LSACandidateLevelOfRepairAnalysisActivity s3kl:LSACandidateMaintenanceTaskAnalysisActivity s3kl:LSACandidateSoftwareDataLoadingAnalysisActivity s3kl:LSACandidateSoftwareSupportAnalysisActivity s3kl:LSACandidateOperationalAnalysisActivity s3kl:LSACandidateSimulationOperationalScenarioAnalysisActivity s3kl:LSACandidateTrainingNeedsAnalysisActivity s3kl:LSACandidateOtherAnalysisActivity ) .
s3kl:candidateItemAnalysisActivityOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:CandidateItemAnalysisActivity ;
      rdfs:range s3kl:LSACandidate .
          
# S3000L v1.1 4.10.3.2 LSACandidateComparativeAnalysisActivity
s3kl:LSACandidateComparativeAnalysisActivity
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:CandidateItemAnalysisActivity .

# S3000L v1.1 4.10.3.3 LSACandidateHumanFactorAnalysisActivity
s3kl:LSACandidateHumanFactorAnalysisActivity
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:CandidateItemAnalysisActivity .

# S3000L v1.1 4.10.3.4 LSACandidateReliabilityAnalysisActivity
s3kl:LSACandidateReliabilityAnalysisActivity
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:CandidateItemAnalysisActivity .

# S3000L v1.1 4.10.3.5 LSACandidateMaintainabilityAnalysisActivity
s3kl:LSACandidateMaintainabilityAnalysisActivity
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:CandidateItemAnalysisActivity .

# S3000L v1.1 4.10.3.6 LSACandidateTestabilityAnalysisActivity
s3kl:LSACandidateTestabilityAnalysisActivity
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:CandidateItemAnalysisActivity .

# S3000L v1.1 4.10.3.7 LSACandidateFailureModeAndEffectAnalysisActivity
s3kl:LSACandidateFailureModeAndEffectAnalysisActivity
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:CandidateItemAnalysisActivity .

# S3000L v1.1 4.10.3.8 LSACandidateDamageAnalysisActivity
s3kl:LSACandidateDamageAnalysisActivity
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:CandidateItemAnalysisActivity .

# S3000L v1.1 4.10.3.9 LSACandidateSpecialEventAnalysisActivity
s3kl:LSACandidateSpecialEventAnalysisActivity
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:CandidateItemAnalysisActivity .

# S3000L v1.1 4.10.3.10 LSACandidateLevelOfRepairAnalysisActivity
s3kl:LSACandidateLevelOfRepairAnalysisActivity
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:CandidateItemAnalysisActivity .

# S3000L v1.1 4.10.3.11 LSACandidateMaintenanceTaskAnalysisActivity
s3kl:LSACandidateMaintenanceTaskAnalysisActivity
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:CandidateItemAnalysisActivity .

# S3000L v1.1 4.10.3.12 LSACandidateSoftwareDataLoadingAnalysisActivity
s3kl:LSACandidateSoftwareDataLoadingAnalysisActivity
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:CandidateItemAnalysisActivity .

# S3000L v1.1 4.10.3.13 LSACandidateSoftwareSupportAnalysisActivity
s3kl:LSACandidateSoftwareSupportAnalysisActivity
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:CandidateItemAnalysisActivity .

# S3000L v1.1 4.10.3.14 LSACandidateOperationalAnalysisActivity
s3kl:LSACandidateOperationalAnalysisActivity
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:CandidateItemAnalysisActivity .

# S3000L v1.1 4.10.3.15 LSACandidateSimulationOperationalScenarioAnalysisActivity
s3kl:LSACandidateSimulationOperationalScenarioAnalysisActivity
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:CandidateItemAnalysisActivity .

# S3000L v1.1 4.10.3.16 LSACandidateTrainingNeedsAnalysisActivity
s3kl:LSACandidateTrainingNeedsAnalysisActivity
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:CandidateItemAnalysisActivity .

# S3000L v1.1 4.10.3.17 LSACandidateOtherAnalysisActivity
s3kl:LSACandidateOtherAnalysisActivity
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:CandidateItemAnalysisActivity .

# S3000L v1.1 ========== 4.11 UOF LSA FMEA ==========
# S3000L v1.1 4.11.3.1 FailureAnalysisItem <<interface>>
s3kl:FailureAnalysisItem
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:unionOf ( s3kl:HardwarePartAsDesigned s3kl:HardwareElementRevision  ) .

# S3000L v1.1 4.11.3.2 FailureMode
s3kl:FailureMode
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:failureModeOwnedBy ; 
          owl:cardinality 1 ] ;
      owl:hasKey ( s3kl:id ) .
s3kl:failureModeOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:FailureMode ;
      rdfs:range s3kl:FailureAnalysisItem . 

# S3000L v1.1 4.11.3.3 TechnicalFailureMode (Req)
s3kl:TechnicalFailureMode
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:FailureMode .
s3kl:technicalFailureModeGroup
      rdf:type owl:ObjectProperty , owl:FunctionalProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:TechnicalFailureMode ;
      rdfs:range s3kl:LSAFailureMode . 

# S3000L v1.1 4.11.3.4 LSAFailureMode
s3kl:LSAFailureMode
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:FailureMode .

# S3000L v1.1 4.11.3.5 LSAFailureModeWithDistributionRatio
s3kl:LSAFailureModeWithDistributionRatio
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:LSAFailureMode .

# S3000L v1.1 4.11.3.6 LSAFailureModeWithDistributionRating
s3kl:LSAFailureModeWithDistributionRating
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:LSAFailureMode .

# S3000L v1.1 4.11.3.7 FailureModeEffect
s3kl:FailureModeEffect
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:failureModeEffectOwnedBy ; 
          owl:cardinality 1 ] .   
s3kl:failureModeEffectOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:FailureModeEffect ;
      rdfs:range s3kl:FailureMode . 

# S3000L v1.1 4.11.3.8 LocalFailureModeEffect (Req)
s3kl:LocalFailureModeEffect
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:FailureModeEffect .

# S3000L v1.1 4.11.3.9 HigherFailureModeEffect
s3kl:HigherFailureModeEffect
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:FailureModeEffect ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:effectContextItem ; 
          owl:cardinality 1 ] .   
s3kl:effectContextItem
      rdf:type owl:ObjectProperty , owl:FunctionalProperty , s3kl:PropertyS3000L ;
      rdfs:domain  s3kl:HigherFailureModeEffect ;
      rdfs:range s3kl:BreakdownElementRevision . 

# S3000L v1.1 4.11.3.10 DetectionMeanItem <<interface>>
s3kl:DetectionMeanItem
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:unionOf ( s3kl:HardwarePartAsDesigned s3kl:HardwareElementRevision  ) .

# S3000L v1.1 4.11.3.11 DetectionMeanCapability
s3kl:DetectionMeanCapability
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:detectionMeanCapabilityOwnedBy ; 
          owl:minCardinality 1 ] .   
s3kl:detectionMeanCapabilityOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:DetectionMeanCapability ;
      rdfs:range s3kl:DetectionMeanItem .

# S3000L v1.1 4.11.3.12 DetectionMeanAlarm
s3kl:DetectionMeanAlarm
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:failureModeDetection ; 
          owl:minCardinality 1 ] ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:detectionMeanAlarmOwnedBy ; 
          owl:minCardinality 1 ] .   
s3kl:detectionMeanAlarmOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:DetectionMeanAlarm ;
      rdfs:range s3kl:DetectionMeanCapability .

# S3000L v1.1 4.11.3.13 FailureModeDetection
# - maps to objectProperty, use class only for property punning of data element failureModeDetectionRate
s3kl:failureModeDetection
      rdf:type owl:ObjectProperty , owl:FunctionalProperty , s3kl:FailureModeDetection , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:DetectionMeanAlarm ;
      rdfs:range s3kl:FailureMode .
s3kl:FailureModeDetection
      rdf:type owl:Class ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:failureModeDetection ] .

# S3000L v1.1 ========== 4.12 UOF Special Events and Damage ==========
# S3000L v1.1 4.12.3.1 DamageAnalysisItem <<interface>>
s3kl:DamageAnalysisItem
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:disjointUnionOf ( s3kl:HardwarePartAsDesigned s3kl:HardwareElementRevision ) .

# S3000L v1.1 4.12.3.2 LSACandidateTechnologyBehaviourRating <<attributeGroup>>
s3kl:LSACandidateTechnologyBehaviourRating
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:DamageAnalysisItem .

# S3000L v1.1 4.12.3.3 Damage
s3kl:Damage
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:damageOwnedBy ; 
          owl:cardinality 1 ] .   
s3kl:damageOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:Damage ;
      rdfs:range s3kl:DamageAnalysisItem . 

# S3000L v1.1 4.12.3.4 PossibleSpecialEventEffect <<relationship>>
# - PUNNING: subProperties of s3kl:possibleSpecialEventEffect to be of type s3kl:PossibleSpecialEventEffect
# -          needed for s3kl:RemarkAssignmentItem, s3kl:ApplicabilityAssignmentItem
s3kl:possibleSpecialEventEffect
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:SpecialEvent ;
      rdfs:range s3kl:Damage .
s3kl:PossibleSpecialEventEffect
      rdf:type owl:Class ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:possibleSpecialEventEffect ] .

# S3000L v1.1 4.12.3.5 SpecialEvent
s3kl:SpecialEvent
      rdf:type owl:Class , s3kl:ClassS3000L .

# S3000L v1.1 4.12.3.6 SpecialEventOccurrence <<relationship>>
# - Note: SpecialEventOccurrence is treated as an occurrence of a SpecialEvent, not as a relation !
s3kl:SpecialEventOccurrence
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:specialEventOccurrenceOwnedBy ; # relating
          owl:cardinality 1 ] ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:relatedProductUsagePhase ; 
          owl:cardinality 1 ] .   
s3kl:specialEventOccurrenceOwnedBy
      rdf:type owl:ObjectProperty , owl:FunctionalProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:SpecialEventOccurrence ;
      rdfs:range s3kl:SpecialEvent .
s3kl:relatedProductUsagePhase
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:SpecialEventOccurrence ;
      rdfs:range s3kl:ProductUsagePhase .

# S3000L v1.1 4.12.3.7 RatedSpecialEventOccurrence <<relationship>>
s3kl:RatedSpecialEventOccurrence
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:SpecialEventOccurrence .
      
# S3000L v1.1 4.12.3.8 QuantifiedSpecialEventOccurrence <<relationship>>
s3kl:QuantifiedSpecialEventOccurrence
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:SpecialEventOccurrence .

# S3000L v1.1 4.12.3.9 ProductUsagePhase
s3kl:ProductUsagePhase
      rdf:type owl:Class , s3kl:ClassS3000L .

# S3000L v1.1 ========== 4.13 UOF LSA Candidate Task Requirement ==========
# S3000L v1.1 4.13.3.1 TaskRequirement
s3kl:TaskRequirement
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:hasKey ( s3kl:id ) .

# S3000L v1.1 4.13.3.2 AuthorityDrivenTaskRequirement
# - Note: no need to add to s3kl:DocumentAssignmentItem interface as this already contains superclass s3kl:TaskRequirement
s3kl:AuthorityDrivenTaskRequirement
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:TaskRequirement .

# S3000L v1.1 4.13.3.3 TaskRequirementRevision
s3kl:TaskRequirementRevision
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:taskRequirementRevisionOwnedBy ; 
          owl:cardinality 1 ] ;
      owl:hasKey ( s3kl:vid s3kl:taskRequirementRevisionOwnedBy ) .
s3kl:taskRequirementRevisionOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:TaskRequirementRevision ;
      rdfs:range s3kl:TaskRequirement .

# S3000L v1.1 4.13.3.4 TaskRequirementTarget <<relationship>>
# - PUNNING: subProperties of s3kl:taskRequirementTarget to be of type s3kl:TaskRequirementTarget
# -          needed for s3kl:TimeLimitItem
s3kl:taskRequirementTarget
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:TaskRequirement ;
      rdfs:range s3kl:LSACandidate .
s3kl:TaskRequirementTarget
      rdf:type owl:Class ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:taskRequirementTarget ] .

# S3000L v1.1 4.13.3.5 TaskRequirementJustificationItem <<interface>>
s3kl:TaskRequirementJustificationItem
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:unionOf ( s3kl:SpecialEvent s3kl:LSAFailureMode s3kl:Damage s3kl:CandidateItemAnalysisActivity s3kl:FunctionalFailure ) .

# S3000L v1.1 4.13.3.6 TaskRequirementJustification <<relationship>>
# - PUNNING: subProperties of s3kl:taskRequirementJustification to be of type s3kl:TaskRequirementJustification
# -          needed for s3kl:DocumentAssignmentItem, s3kl:RemarkAssignmentItem
s3kl:taskRequirementJustification
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:TaskRequirementJustificationItem ;
      rdfs:range s3kl:TaskRequirementRevision .
s3kl:TaskRequirementJustification
      rdf:type owl:Class ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:taskRequirementJustification ] .

# S3000L v1.1 4.13.3.7 ChangeRequest
s3kl:ChangeRequest
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:hasKey ( s3kl:id ) ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:changeRequestSource ; 
          owl:minCardinality 1 ] .   

# S3000L v1.1 4.13.3.8 ChangeRequestSource <<relationship>>
s3kl:changeRequestSource
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:ChangeRequest ;
      rdfs:range s3kl:TaskRequirementRevision . 

# S3000L v1.1 4.13.3.9 ChangeRequestTarget <<relationship>>
s3kl:changeRequestTarget
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:ChangeRequest ;
      rdfs:range s3kl:LSACandidate . 

# S3000L v1.1 4.13.3.10 FunctionalFailure
s3kl:FunctionalFailure
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:hasKey ( s3kl:vid ) ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:functionalFailureOwnedBy ; 
          owl:cardinality 1 ] .
s3kl:functionalFailureOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:FunctionalFailure ;
      rdfs:range s3kl:BreakdownElementRevision .

# S3000L v1.1 ========== 4.14 UOF Task, PDF-450 ==========
# S3000L v1.1 4.14.3.1 Task
s3kl:Task
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:TypicalIndividual , s3kl:Activity ;
      owl:disjointUnionOf ( s3kl:RectifyingTask s3kl:SupportingTask s3kl:OperationalTask ) ;
      owl:hasKey ( s3kl:id ) .

# S3000L v1.1 4.14.3.2 RectifyingTask
s3kl:RectifyingTask
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:Task .

# S3000L v1.1 4.14.3.3 SupportingTask
s3kl:SupportingTask
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:Task .

# S3000L v1.1 4.14.3.4 OperationalTask
s3kl:OperationalTask
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:Task .

# S3000L v1.1 4.14.3.5 TaskRevision
s3kl:TaskRevision
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:TypicalIndividual , s3kl:Activity ;
      owl:hasKey ( s3kl:vid s3kl:taskRevisionOwnedBy ) ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:taskRevisionOwnedBy ; 
          owl:cardinality 1 ] .   
s3kl:taskRevisionOwnedBy                    	 
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:TaskRevision ;
      rdfs:range s3kl:Task .

# S3000L v1.1 4.14.3.6 TaskJustification <<relationship>>
s3kl:taskJustification
      rdf:type owl:ObjectProperty , owl:FunctionalProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:TaskRevision ;
      rdfs:range s3kl:TaskRequirement .

# S3000L v1.1 4.14.3.7 DataModuleScope <<relationship>> (Req)
# - PUNNING: subProperties of s3kl:dataModuleScope to be of type s3kl:DataModuleScope
# -          needed for s3kl:RemarkAssignmentItem
s3kl:dataModuleScope
      rdf:type owl:ObjectProperty , owl:FunctionalProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:TaskRevision ;
      rdfs:range s3kl:S1000DDataModuleIssue .
s3kl:DataModuleScope
      rdf:type owl:Class ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:dataModuleScope ] .

# S3000L v1.1 4.14.3.8 Subtask
s3kl:Subtask
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:TypicalIndividual , s3kl:Activity ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:subtaskOwnedBy ; 
          owl:cardinality 1 ] ;
      owl:hasKey ( s3kl:id s3kl:subtaskOwnedBy ) .
s3kl:subtaskOwnedBy                  	 
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:Subtask ;
      rdfs:range s3kl:TaskRevision .

# S3000L v1.1 4.14.3.9 SubtaskTimeline
# - NOTE: subtaskTimelineEvent and subtaskTimelineLay to be implemented by PUNNING
# - PUNNING: subProperties of s3kl:subtaskTimeline to be of type s3kl:SubtaskTimeline
# -          needed for s3kl:DocumentAssignmentItem, s3kl:RemarkAssignmentItem, s3kl:ApplicabilityAssignmentItem
s3kl:subtaskTimeline
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:after ;
      rdfs:domain s3kl:Subtask ;
      rdfs:range s3kl:Subtask .
s3kl:SubtaskTimeline
      rdf:type owl:Class ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:subtaskTimeline ] .

# S3000L v1.1 4.14.3.10 WarningCautionNote
s3kl:WarningCautionNote
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:hasKey ( s3kl:id ) .

# S3000L v1.1 4.14.3.11 TaskRevisionWarningCautionNote <<relationship>> (Req)
# - PUNNING: subProperties of s3kl:taskRevisionWarningCautionNote to be of type s3kl:TaskRevisionWarningCautionNote
# -          needed for s3kl:ApplicabilityAssignmentItem
s3kl:taskRevisionWarningCautionNote
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:TaskRevision ;
      rdfs:range s3kl:WarningCautionNote .
s3kl:TaskRevisionWarningCautionNote
      rdf:type owl:Class ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:taskRevisionWarningCautionNote ] .

# S3000L v1.1 4.14.3.12 SubtaskWarningCautionNote <<relationship>> (Req)
# - PUNNING: subProperties of s3kl:subtaskWarningCautionNote to be of type s3kl:SubtaskWarningCautionNote
# -          needed for s3kl:ApplicabilityAssignmentItem
s3kl:subtaskWarningCautionNote
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:Subtask ;
      rdfs:range s3kl:WarningCautionNote .
s3kl:SubtaskWarningCautionNote
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:subtaskWarningCautionNote ] .

# S3000L v1.1 4.14.3.13 SubtaskByTaskReference (Req)
s3kl:SubtaskByTaskReference
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:Subtask ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:taskReference ; 
          owl:minCardinality 1 ] .   

# S3000L v1.1 4.14.3.14 TaskReference <<relationship>> (Req)
s3kl:taskReference
      rdf:type owl:ObjectProperty , owl:FunctionalProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:SubtaskByTaskReference ;
      rdfs:range s3kl:Task .

# S3000L v1.1 4.14.3.15 SubtaskByDefinition
s3kl:SubtaskByDefinition
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:Subtask .

# S3000L v1.1 4.14.3.16 SubtaskInZone <<relationship>>
# - PUNNING: subProperties of s3kl:subtaskInZone to be of type s3kl:SubtaskInZone
# -          needed for s3kl:RemarkAssignmentItem, s3kl:ApplicabilityAssignmentItem
s3kl:subtaskInZone
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:SubtaskByDefinition ;
      rdfs:range s3kl:ZoneElement .
s3kl:SubtaskInZone
      rdf:type owl:Class ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:subtaskInZone ] .

# S3000L v1.1 4.14.3.17 SubtaskAcceptanceParameter <<attributeGroup>>
s3kl:SubtaskAcceptanceParameter
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:subtaskAcceptanceParameterOwnedBy ; 
          owl:minCardinality 1 ] .   
s3kl:subtaskAcceptanceParameterOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:SubtaskAcceptanceParameter ;
      rdfs:range s3kl:SubtaskByDefinition .

# S3000L v1.1 4.14.3.18 SubtaskTarget <<relationship>>
s3kl:subtaskTarget
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:SubtaskByDefinition ;
      rdfs:range s3kl:LSACandidate .

# S3000L v1.1 4.14.3.19 SubtaskCircuitBreakerSettings
s3kl:SubtaskCircuitBreakerSettings
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:subtaskAcceptanceParameterOwnedBy ; 
          owl:minCardinality 1 ] .   
s3kl:subtaskCircuitBreakerSettingsOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:SubtaskCircuitBreakerSettings ;
      rdfs:range s3kl:SubtaskByDefinition .

# S3000L v1.1 4.14.3.20 SubtaskCircuitBreakerSettingsTimeline
# - PUNNING: subProperties of s3kl:subtaskCircuitBreakerSettingsTimeline to be of type s3kl:SubtaskCircuitBreakerSettingsTimeline
# -          needed for s3kl:ApplicabilityAssignmentItem
s3kl:subtaskCircuitBreakerSettingsTimeline
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:SubtaskCircuitBreakerSettings ;
      rdfs:range s3kl:SubtaskCircuitBreakerSettings .
s3kl:SubtaskCircuitBreakerSettingsTimeline
      rdf:type owl:Class ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:subtaskCircuitBreakerSettingsTimeline ] .

# S3000L v1.1 4.14.3.21 OrderedSubtaskCircuitBreakerSettings
s3kl:OrderedSubtaskCircuitBreakerSettings
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:SubtaskCircuitBreakerSettings .
s3kl:subtaskCircuitBreakerSettingOrder
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:SubtaskCircuitBreakerSetting ;
      rdfs:range s3kl:SubtaskCircuitBreakerSetting .

# S3000L v1.1 4.14.3.22 RandomSubtaskCircuitBreakerSettings
s3kl:RandomSubtaskCircuitBreakerSettings
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:SubtaskCircuitBreakerSettings .

# S3000L v1.1 4.14.3.23 SubtaskCircuitBreakerSetting (singular) <<attributeGroup>>
s3kl:SubtaskCircuitBreakerSetting
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:subtaskAcceptanceParameterOwnedBy ; 
          owl:minCardinality 1 ] .   
s3kl:subtaskCircuitBreakerSettingOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:SubtaskCircuitBreakerSetting ;
      rdfs:range s3kl:SubtaskCircuitBreakerSettings .
s3kl:subtaskCircuitBreakerSettingDefinition
      rdf:type owl:ObjectProperty , owl:FunctionalProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:SubtaskCircuitBreakerSetting ;
      rdfs:range s3kl:CircuitBreaker .

# S3000L v1.1 4.14.3.24 CircuitBreaker
s3kl:CircuitBreaker
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:hasKey ( s3kl:id ) .

# S3000L v1.1 4.14.3.25 SubtaskByExternalReference
s3kl:SubtaskByExternalReference
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:SubtaskByDefinition .

# S3000L v1.1 ========== 4.15 UOF Task Resources ==========
# S3000L v1.1 4.15.3.1 TaskResourceItem <<interface>>
s3kl:TaskResourceItem
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:unionOf ( s3kl:SubtaskByDefinition s3kl:TaskRevision ) .

# S3000L v1.1 4.15.3.2 TaskResource
s3kl:TaskResource
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:disjointUnionOf ( s3kl:TaskDocumentResource s3kl:TaskPersonnelResource s3kl:TaskFacilityResource s3kl:TaskMaterialResource ) ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:taskResourceOwnedBy ; 
          owl:cardinality 1 ] .   
s3kl:taskResourceOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:TaskResource ;
      rdfs:range s3kl:TaskResourceItem . 

# S3000L v1.1 4.15.3.3 TaskResourceRelationship
# - PUNNING: subProperties of s3kl:taskResourceRelationship to be of type s3kl:TaskResourceRelationship
# -          needed for s3kl:RemarkAssignmentItem, s3kl:ApplicabilityAssignmentItem
s3kl:taskResourceRelationship
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:TaskResource ; # relating
      rdfs:range s3kl:TaskResource .  # related
s3kl:TaskResourceRelationship
      rdf:type owl:Class ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:taskResourceRelationship ] .

# S3000L v1.1 4.15.3.4 TaskMaterialResource
s3kl:TaskMaterialResource
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:TaskResource ;
      owl:disjointUnionOf ( s3kl:TaskMaterialResourceByReference s3kl:TaskMaterialResourceBySpecification ) .
      
# S3000L v1.1 4.15.3.5 TaskMaterialResourceByReference (Req)
s3kl:TaskMaterialResourceByReference
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:TaskMaterialResource ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:taskMaterialResourceByReferenceDefinition ; 
          owl:cardinality 1 ] .   
s3kl:taskMaterialResourceByReferenceDefinition
      rdf:type owl:ObjectProperty , owl:FunctionalProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:TaskMaterialResourceByReference ;
      rdfs:range s3kl:TaskResourceByReferenceItem .

# S3000L v1.1 4.15.3.6 TaskMaterialResourceBySpecification (Req)
s3kl:TaskMaterialResourceBySpecification
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:TaskMaterialResource ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:taskMaterialResourceBySpecificationDefinition ; 
          owl:cardinality 1 ] .   
s3kl:taskMaterialResourceBySpecificationDefinition
      rdf:type owl:ObjectProperty , owl:FunctionalProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:TaskMaterialResourceBySpecification ;
      rdfs:range s3kl:MaterialResourceSpecification .

# S3000L v1.1 4.15.3.7 ResourceSpecification
s3kl:ResourceSpecification
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:disjointUnionOf ( s3kl:MaterialResourceSpecification s3kl:FacilityResourceSpecification ) ;
      owl:hasKey ( s3kl:id ) .

# S3000L v1.1 4.15.3.8 ResourceRealization <<relationship>> (Req)
# - PUNNING: subProperties of s3kl:resourceRealization to be of type s3kl:ResourceRealization
# -          needed for s3kl:DocumentAssignmentItem, s3kl:RemarkAssignmentItem, s3kl:ApplicabilityAssignmentItem
s3kl:resourceRealization
      rdf:type owl:ObjectProperty , owl:FunctionalProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:ResourceSpecification ;
      rdfs:range s3kl:HardwarePartAsDesigned .
s3kl:ResourceRealization
      rdf:type owl:Class ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:resourceRealization ] .

# S3000L v1.1 4.15.3.9 MaterialResourceSpecification
s3kl:MaterialResourceSpecification
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:ResourceSpecification .

# S3000L v1.1 4.15.3.10 TaskFacilityResource
s3kl:TaskFacilityResource
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:TaskResource ;
      owl:disjointUnionOf ( s3kl:TaskFacilityResourceByReference s3kl:TaskFacilityResourceBySpecification ) .

# S3000L v1.1 4.15.3.11 TaskFacilityResourceByReference (Req)
s3kl:TaskFacilityResourceByReference
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:TaskFacilityResource ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:taskFacilityResourceByReferenceDefinition ; 
          owl:cardinality 1 ] .   
s3kl:taskFacilityResourceByReferenceDefinition
      rdf:type owl:ObjectProperty , owl:FunctionalProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:TaskFacilityResourceByReference ;
      rdfs:range s3kl:TaskResourceByReferenceItem .

# S3000L v1.1 4.15.3.12 TaskFacilityResourceBySpecification (Req)
s3kl:TaskFacilityResourceBySpecification
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:TaskFacilityResource ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:taskFacilityResourceBySpecificationDefinition ; 
          owl:cardinality 1 ] .   
s3kl:taskFacilityResourceBySpecificationDefinition
      rdf:type owl:ObjectProperty , owl:FunctionalProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:TaskFacilityResourceBySpecification ;
      rdfs:range s3kl:FacilityResourceSpecification .

# S3000L v1.1 4.15.3.13 FacilityResourceSpecification (Req)??
s3kl:FacilityResourceSpecification
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:ResourceSpecification .

# S3000L v1.1 4.15.3.14 TaskResourceByReferenceItem <<interface>>
s3kl:TaskResourceByReferenceItem
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:unionOf ( s3kl:HardwareElement s3kl:HardwarePartAsDesigned ) .

# S3000L v1.1 4.15.3.15 TaskPersonnelResource
s3kl:TaskPersonnelResource
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:TaskResource ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:taskPersonnelResourceCompetence ; 
          owl:minCardinality 1 ] .   

# S3000L v1.1 4.15.3.16 CompetenceDefinitionItem <<interface>>
s3kl:CompetenceDefinitionItem
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:unionOf ( s3kl:Trade s3kl:SkillLevel s3kl:Skill ) .

# S3000L v1.1 4.15.3.17 Trade
s3kl:Trade
      rdf:type owl:Class , s3kl:ClassS3000L .

# S3000L v1.1 4.15.3.18 Skill
s3kl:Skill
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:hasKey ( s3kl:id ) .

# S3000L v1.1 4.15.3.19 SkillLevel
s3kl:SkillLevel
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:skillLevelOwnedBy ; 
          owl:cardinality 1 ] .   
s3kl:skillLevelOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:SkillLevel ;
      rdfs:range s3kl:Trade .

# S3000L v1.1 4.15.3.20 TaskPersonnelResourceCompetence <<relationship>> (Req)
# - PUNNING: subProperties of s3kl:taskPersonnelResourceCompetence to be of type s3kl:TaskPersonnelResourceCompetence
# -          needed for s3kl:additionalTrainingRequirementOwnedBy, s3kl:ApplicabilityAssignmentItem
s3kl:taskPersonnelResourceCompetence
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:TaskPersonnelResource ;
      rdfs:range s3kl:CompetenceDefinitionItem .
s3kl:TaskPersonnelResourceCompetence
      rdf:type owl:Class ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:taskPersonnelResourceCompetence ] .

# S3000L v1.1 4.15.3.21 AdditionalTrainingRequirement <<attributeGroup>>
s3kl:AdditionalTrainingRequirement
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:additionalTrainingRequirementOwnedBy ; 
          owl:cardinality 1 ] .   
s3kl:additionalTrainingRequirementOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:AdditionalTrainingRequirement ;
      rdfs:range s3kl:TaskPersonnelResourceCompetence .

# S3000L v1.1 4.15.3.22 TaskDocumentResource
s3kl:TaskDocumentResource
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:TaskResource ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:taskDocumentResourceDefinition ; 
          owl:cardinality 1 ] .
s3kl:taskDocumentResourceDefinition
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:TaskDocumentResource ;
      rdfs:range s3kl:Document .

# S3000L v1.1 ========== 4.16 UOF Task Usage ==========
# S3000L v1.1 4.16.3.1 TaskTarget <<relationship>> (Req)
s3kl:TaskTarget
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:taskTargetObject ; 
          owl:cardinality 1 ] .   
s3kl:taskTargetObject
      rdf:type owl:ObjectProperty , owl:FunctionalProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:TaskTarget ;
      rdfs:range s3kl:LSACandidate .

# S3000L v1.1 4.16.3.2 TaskFrequency
s3kl:TaskFrequency
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:taskFrequencyOwnedBy ; 
          owl:cardinality 1 ] .   
s3kl:taskFrequencyOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:TaskFrequency ;
      rdfs:range s3kl:TaskTarget .

# S3000L v1.1 4.16.3.3 PlannedTaskItem <<interface>>
# - Note: Not covered as ObjectProperty but as Class
s3kl:PlannedTaskItem 
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:unionOf ( s3kl:RectifyingTask s3kl:OperationalTask ) .

# S3000L v1.1 4.16.3.4 PlannedTaskTarget <<relationship>> (Req)
s3kl:PlannedTaskTarget
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:TaskTarget ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:allocatedMaintenanceLevel ; 
          owl:minCardinality 1 ] ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:plannedTaskTargetSubject ; 
          owl:cardinality 1 ] .   
s3kl:plannedTaskTargetSubject
      rdf:type owl:ObjectProperty , owl:FunctionalProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:PlannedTaskTarget ;
      rdfs:range s3kl:PlannedTaskItem .

# S3000L v1.1 4.16.3.5 AllocatedMaintenanceLevel <<relationship>> (Req)
# - PUNNING: subProperties of s3kl:allocatedMaintenanceLevel to be of type s3kl:AllocatedMaintenanceLevel
# -          needed for s3kl:RemarkAssignmentItem, s3kl:ApplicabilityAssignmentItem
s3kl:allocatedMaintenanceLevel
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:PlannedTaskTarget ;
      rdfs:range s3kl:AllocatedMaintenanceLevelItem .
s3kl:AllocatedMaintenanceLevel
      rdf:type owl:Class ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:allocatedMaintenanceLevel ] .

# S3000L v1.1 4.16.3.6 AllocatedMaintenanceLevelItem <<interface>>
s3kl:AllocatedMaintenanceLevelItem
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:unionOf ( s3kl:OperatingLocationType s3kl:OperatingLocation s3kl:MaintenanceLevel s3kl:MaintenanceLocation ) .

# S3000L v1.1 4.16.3.7 TimeLimit
s3kl:TimeLimit
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:timeLimitOwnedBy ; 
          owl:cardinality 1 ] .   
s3kl:timeLimitOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:TimeLimit ;
      rdfs:range s3kl:TimeLimitItem .

# S3000L v1.1 4.16.3.8 TimeLimitItem <<interface>>
# - note: Bad naming, this is a collection of TimeLimit(s) for the interfaced classes s3kl:PlannedTaskItem and s3kl:TaskRequirementTarget
s3kl:TimeLimitItem
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:unionOf ( s3kl:PlannedTaskItem s3kl:TaskRequirementTarget ) .

# S3000L v1.1 4.16.3.9 SamplingDefinition
s3kl:SamplingDefinition
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:samplingDefinitionOwnedBy ; 
          owl:cardinality 1 ] .   
s3kl:samplingDefinitionOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:SamplingDefinition ;
      rdfs:range s3kl:SamplingItem .

# S3000L v1.1 4.16.3.10 SamplingDefinitionByRatio 
s3kl:SamplingDefinitionByRatio 
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:SamplingDefinition .

# S3000L v1.1 4.16.3.11 SamplingDefinitionByValue
s3kl:SamplingDefinitionByValue
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:SamplingDefinition .

# S3000L v1.1 4.16.3.12 SamplingItem <<interface>>
s3kl:SamplingItem
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:unionOf ( s3kl:DiscreteTimeLimit s3kl:RepeatTimeLimit s3kl:InitialTimeLimit ) .

# S3000L v1.1 4.16.3.13 DiscreteTimeLimit (Req)
s3kl:DiscreteTimeLimit
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:TimeLimit .

# S3000L v1.1 4.16.3.14 PeriodicTimeLimit (Req)
s3kl:PeriodicTimeLimit
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:TimeLimit .

# S3000L v1.1 4.16.3.15 InitialTimeLimit (Req)
s3kl:InitialTimeLimit
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:initialTimeLimitOwnedBy ; 
          owl:cardinality 1 ] .   
s3kl:initialTimeLimitOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:InitialTimeLimit ;
      rdfs:range s3kl:PeriodicTimeLimit .

# S3000L v1.1 4.16.3.16 RepeatTimeLimit (Req)
s3kl:RepeatTimeLimit
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:repeatTimeLimitOwnedBy ; 
          owl:cardinality 1 ] .   
s3kl:repeatTimeLimitOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:RepeatTimeLimit ;
      rdfs:range s3kl:PeriodicTimeLimit .

# S3000L v1.1 4.16.3.17 SubsequentRepeatRelationship <<relationship>> (Req)
s3kl:subsequentRepeatRelationship
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:RepeatTimeLimit ; # succeeding
      rdfs:range s3kl:RepeatTimeLimit . # preceding

# S3000L v1.1 4.16.3.18 ThresholdDefinition (Req)
s3kl:ThresholdDefinition
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:thresholdDefinitionOwnedBy ; 
          owl:cardinality 1 ] .   
# don't use s3kl:thresholdDefinitionOwnedBy but only one of its subProperties ..._threshold or ..._trigger
s3kl:thresholdDefinitionOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:ThresholdDefinition ;
      rdfs:range s3kl:ThresholdDefinitionOwner .
s3kl:ThresholdDefinitionOwner
      rdf:type owl:Class ;
      owl:unionOf ( s3kl:DiscreteTimeLimit s3kl:RepeatTimeLimit s3kl:InitialTimeLimit ) .
s3kl:thresholdDefinitionOwnedBy_threshold
      rdf:type owl:ObjectProperty , owl:FunctionalProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:thresholdDefinitionOwnedBy .
      # range is the same as s3kl:ThresholdDefinitionOwner
s3kl:thresholdDefinitionOwnedBy_trigger
      rdf:type owl:ObjectProperty , owl:FunctionalProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:thresholdDefinitionOwnedBy ;
      rdfs:range s3kl:ThresholdDefinitionOwner_trigger .
s3kl:ThresholdDefinitionOwner_trigger
      rdf:type owl:Class ;
      owl:unionOf ( s3kl:DiscreteTimeLimit s3kl:InitialTimeLimit [ 
          rdf:type owl:Class ;
          owl:intersectionOf ( 
            [ rdfs:subClassOf s3kl:RepeatTimeLimit ]
            [ rdf:type owl:Restriction ;
              owl:onProperty s3kl:subsequentRepeatRelationship ; 
              owl:cardinality 1 ] ) ] ) .   
# Note: The association "trigger" between ThresholdDefinition and SubsequentRepeatRelationship
#  is changes into an equivalent constraint on RepeatTimeLimit, see [ ... [ ... ] ... ] above.
#  This avoids using punning for this replatonship and is closer to the intended meaning.

# S3000L v1.1 4.16.3.19 ParameterThresholdDefinition
s3kl:ParameterThresholdDefinition
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:ThresholdDefinition .

# S3000L v1.1 4.16.3.20 EventThresholdDefinition
s3kl:EventThresholdDefinition
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:ThresholdDefinition .

# S3000L v1.1 4.16.3.21 FailureModeThresholdDefinition (Req)
s3kl:FailureModeThresholdDefinition
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:EventThresholdDefinition ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:failureModeThresholdDefinitionEvent ; 
          owl:cardinality 1 ] .   
s3kl:failureModeThresholdDefinitionEvent
      rdf:type owl:ObjectProperty , owl:FunctionalProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:FailureModeThresholdDefinition ;
      rdfs:range s3kl:FailureMode .

# S3000L v1.1 4.16.3.22 SpecialEventThresholdDefinition
s3kl:SpecialEventThresholdDefinition
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:EventThresholdDefinition ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:eventThresholdDefinitionEvent ; 
          owl:cardinality 1 ] .   
s3kl:eventThresholdDefinitionEvent
      rdf:type owl:ObjectProperty , owl:FunctionalProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:SpecialEventThresholdDefinition ;
      rdfs:range s3kl:SpecialEvent .

# S3000L v1.1 4.16.3.23 TaskThresholdDefinition (Req)
s3kl:TaskThresholdDefinition
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:EventThresholdDefinition ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:taskThresholdDefinitionEvent ; 
          owl:cardinality 1 ] .   
s3kl:taskThresholdDefinitionEvent
      rdf:type owl:ObjectProperty , owl:FunctionalProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:TaskThresholdDefinition ;
      rdfs:range s3kl:Task .

# S3000L v1.1 ========== 4.17 UOF Task Usage (part 2) ==========
# S3000L v1.1 4.17.4.3.1 SupportingTaskTarget <<relationship>>
s3kl:SupportingTaskTarget
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:TaskTarget ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:supportingTaskTargetSubject ; 
          owl:cardinality 1 ] .
s3kl:supportingTaskTargetSubject 
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:SupportingTaskTarget ;
      rdfs:range s3kl:SupportingTask .


# S3000L v1.1 ==========  4.18 UOF Security Classification ========== 
# S3000L v1.1 4.18.3.1 SecurityClass
s3kl:SecurityClass
      rdf:type owl:Class , s3kl:ClassS3000L .

# S3000L v1.1 4.18.3.2 SecurityClassificationItem <<interface>>
s3kl:SecurityClassificationItem
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:unionOf ( s3kl:BreakdownElement s3kl:TaskRequirement s3kl:PartAsDesigned s3kl:Subtask s3kl:Task ) .

# S3000L v1.1 4.18.3.3 SecurityClassification <<relationship>>
# - PUNNING: subProperties of s3kl:securityClassification to be of type s3kl:SecurityClassification
# -          needed for s3kl:OrganizationAssignmentItem, s3kl:DocumentAssignmentItem, s3kl:RemarkAssignmentItem, s3kl:ApplicabilityAssignmentItem
s3kl:securityClassification                    	 
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:SecurityClassificationItem ;
      rdfs:range s3kl:SecurityClass .
s3kl:SecurityClassification
      rdf:type owl:Class ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:securityClassification ] .

# S3000L v1.1 ========== 4.19 UOF Organization Assignment ========== 
# S3000L v1.1 4.19.3.1 OrganizationAssignmentItem <<interface>>
s3kl:OrganizationAssignmentItem
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:unionOf ( s3kl:Project s3kl:Contract s3kl:Product s3kl:ProductVariant s3kl:Breakdown s3kl:BreakdownElement s3kl:PartAsDesigned s3kl:SubstanceDefinition s3kl:AllowedProductConfiguration s3kl:KeyPerformanceIndicator s3kl:CandidateItemAnalysisActivity s3kl:FailureMode s3kl:ChangeRequest s3kl:TaskRequirement s3kl:Task s3kl:ResourceSpecification s3kl:Trade s3kl:Skill s3kl:TaskTarget s3kl:TimeLimit s3kl:SecurityClass s3kl:SecurityClassification s3kl:Document s3kl:Remark s3kl:PropertyType ) .

# S3000L v1.1 4.19.3.2 OrganizationAssignment <<relationship>>
s3kl:organizationAssignment                    	 
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:OrganizationAssignmentItem ;
      rdfs:range s3kl:Organization .
s3kl:OrganizationAssignment
      rdf:type owl:Class ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:organizationAssignment ] .

# S3000L v1.1 ========== 4.20 UOF Document ==========
# S3000L v1.1 4.20.3.1 Document
s3kl:Document
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:ClassOfInformationObject ;
      owl:disjointUnionOf ( s3kl:S1000DDataModule s3kl:S1000DPublicationModule s3kl:ExternalDocument ) .

# S3000L v1.1 4.20.3.2 DocumentIssue
s3kl:DocumentIssue
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:InformationContent ;
      owl:disjointUnionOf ( s3kl:S1000DDataModuleIssue s3kl:S1000DPublicationModuleIssue s3kl:ExternalDocumentIssue ) ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:documentIssueOwnedBy ; 
          owl:minCardinality 1 ] .   
s3kl:documentIssueOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:DocumentIssue ;
      rdfs:range s3kl:Document .

# S3000L v1.1 4.20.3.3 S1000DDataModule
s3kl:S1000DDataModule
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:Document ;
      owl:hasKey ( s3kl:id ) .

# S3000L v1.1 4.20.3.4 S1000DDataModuleIssue
s3kl:S1000DDataModuleIssue
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:DocumentIssue ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:documentIssueOwnedBy ; 
          owl:someValuesFrom s3kl:S1000DDataModule ] ;  
      owl:hasKey ( s3kl:vid s3kl:documentIssueOwnedBy ) .

# S3000L v1.1 4.20.3.5 S1000DPublicationModule
s3kl:S1000DPublicationModule
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:Document ;
      owl:hasKey ( s3kl:id ) .

# S3000L v1.1 4.20.3.6 S1000DPublicationModuleIssue
s3kl:S1000DPublicationModuleIssue
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:DocumentIssue ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:documentIssueOwnedBy ; 
          owl:someValuesFrom s3kl:S1000DDataModule ] ;  
      owl:hasKey ( s3kl:vid s3kl:documentIssueOwnedBy ) .

# S3000L v1.1 4.20.3.7 ExternalDocument
s3kl:ExternalDocument
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:Document ;
      owl:hasKey ( s3kl:id ) .

# S3000L v1.1 4.20.3.8 ExternalDocumentIssue
s3kl:ExternalDocumentIssue
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:DocumentIssue ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:documentIssueOwnedBy ; 
          owl:someValuesFrom s3kl:S1000DDataModule ] ;  
      owl:hasKey ( s3kl:vid s3kl:documentIssueOwnedBy ) .

# S3000L v1.1 4.20.3.9 DocumentAssignmentItem
# - s3kl:OrganizationAssignmentRole used instead of s3kl:organizationAssignment (punning)
# - NOTE: HardwareElementPartRealization replaced by s3kl:HardwarePartOccurrence
# - NOTE: SoftwareElementPartRealization replaced by s3kl:SoftwarePartOccurrence
s3kl:DocumentAssignmentItem
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:unionOf ( s3kl:Project s3kl:Contract s3kl:Product s3kl:ProductVariant s3kl:ContractedProductVariant s3kl:Organization s3kl:OperatingLocation s3kl:OperatingLocationType s3kl:MaintenanceLocation s3kl:MaintenanceLevel s3kl:Breakdown s3kl:BreakdownRevision s3kl:BreakdownElement s3kl:BreakdownElementRevision s3kl:PartAsDesigned s3kl:PartAsDesignedPartsList s3kl:PartAsDesignedPartsListEntry s3kl:AlternatePartAsDesignedRelationship s3kl:SubstanceDefinition s3kl:ContainedSubstance s3kl:HardwarePartOccurrence s3kl:HardwarePartOccurrence s3kl:BreakdownElementInZoneRelationship s3kl:AllowedProductConfiguration s3kl:ItemInAllowedProductConfiguration s3kl:AuthorityToOperate s3kl:KeyPerformanceIndicator s3kl:CorrectionFactor s3kl:CandidateItemAnalysisActivity s3kl:FailureMode s3kl:FailureModeEffect s3kl:DetectionMeanAlarm s3kl:LSACandidateTechnologyBehaviourRating s3kl:SpecialEvent s3kl:ProductUsagePhase s3kl:SpecialEventOccurrence s3kl:Damage s3kl:TaskRequirement s3kl:TaskRequirementRevision s3kl:TaskRequirementJustification s3kl:ChangeRequest s3kl:Task s3kl:TaskRevision s3kl:WarningCautionNote s3kl:Subtask s3kl:SubtaskTimeline s3kl:SubtaskAcceptanceParameter s3kl:CircuitBreaker s3kl:TaskResource s3kl:Skill s3kl:SkillLevel s3kl:Trade s3kl:AdditionalTrainingRequirement s3kl:ResourceSpecification s3kl:ResourceRealization s3kl:TaskTarget s3kl:TaskFrequency s3kl:TimeLimit s3kl:SecurityClass s3kl:SecurityClassification 
            s3kl:OrganizationAssignmentRole s3kl:Remark s3kl:ApplicabilityStatement s3kl:ConditionType s3kl:ConditionInstance s3kl:ConditionStatement s3kl:AuthorizedLife s3kl:ClassificationType s3kl:PropertyType ) .

# S3000L v1.1 4.20.3.10 DocumentItem <<interface>>
s3kl:DocumentItem
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:unionOf ( s3kl:Document s3kl:DocumentIssue ) .

# S3000L v1.1 4.20.3.11 DocumentAssignment <<relationship>>
# - PUNNING: subProperties of s3kl:documentAssignment to be of type s3kl:DocumentAssignment
# -          needed for s3kl:RemarkAssignmentItem, s3kl:ApplicabilityAssignmentItem
s3kl:documentAssignment
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:DocumentAssignmentItem ;
      rdfs:range s3kl:DocumentItem .
s3kl:DocumentAssignment
      rdf:type owl:Class ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:documentAssignment ] .

# S3000L v1.1 ========== 4.21 UOF Remark ==========
# S3000L v1.1 4.21.3.1 Remark
# note from David Leal: rdfs:subClassOf s3kl:Activity, and then it can inherit performer, data of completion      
s3kl:Remark
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:remarkAssignment ; 
          owl:minCardinality 1 ] .   

# S3000L v1.1 4.21.3.2 RemarkAssignmentItem <<interface>>
# - s3kl:OrganizationAssignmentRole used instead of s3kl:organizationAssignment (punning)
# - NOTE: BreakdownElementStructureRelationship replaced by s3kl:BreakdownElementUsageInBreakdown
# - NOTE: HardwareElementPartRealization replaced by s3kl:HardwarePartOccurrence
# - NOTE: SoftwareElementPartRealization replaced by s3kl:SoftwarePartOccurrence
# - Note: ItemInProductVariant changed to ProductVariantItem (because of introduced occurrence concept)
s3kl:RemarkAssignmentItem
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:unionOf ( s3kl:Project s3kl:Contract s3kl:ContractRelationship s3kl:Product s3kl:ProductVariant s3kl:ContractedProductVariant s3kl:Organization s3kl:ContractedProductVariantAtOperatingLocation s3kl:ContractedProductVariantAtOperatingLocationType s3kl:OperatingLocation s3kl:OperatingLocationType s3kl:MaintenanceLevel s3kl:MaintenanceLocation s3kl:Breakdown s3kl:BreakdownRevision s3kl:BreakdownElement s3kl:BreakdownElementRevision s3kl:BreakdownElementRevisionRelationship s3kl:BreakdownElementUsageInBreakdown s3kl:PartAsDesigned s3kl:PartAsDesignedPartsList s3kl:PartAsDesignedPartsListEntry s3kl:SubstanceDefinition s3kl:ContainedSubstance s3kl:AlternatePartAsDesignedRelationship s3kl:SubstitutePartAsDesignedRelationship s3kl:HardwarePartOccurrence s3kl:SoftwarePartOccurrence s3kl:BreakdownElementInZoneRelationship s3kl:AllowedProductConfiguration s3kl:AuthorityToOperate s3kl:ItemInAllowedProductConfiguration s3kl:ProductVariantItem s3kl:NestedProductVariantRelationship s3kl:NestedAllowedProductConfigurationRelationship s3kl:KeyPerformanceIndicator s3kl:CorrectionFactor s3kl:CandidateItemAnalysisActivity s3kl:FailureMode s3kl:FailureModeEffect s3kl:DetectionMeanCapability s3kl:DetectionMeanAlarm s3kl:ProductUsagePhase s3kl:SpecialEvent s3kl:SpecialEventOccurrence s3kl:Damage s3kl:LSACandidateTechnologyBehaviourRating s3kl:PossibleSpecialEventEffect s3kl:TaskRequirement s3kl:TaskRequirementRevision s3kl:TaskRequirementJustification s3kl:ChangeRequest s3kl:Task s3kl:TaskRevision s3kl:DataModuleScope s3kl:WarningCautionNote s3kl:Subtask s3kl:SubtaskTimeline s3kl:SubtaskInZone s3kl:SubtaskAcceptanceParameter s3kl:SubtaskCircuitBreakerSetting s3kl:CircuitBreaker s3kl:TaskResource s3kl:TaskResourceRelationship s3kl:ResourceSpecification s3kl:ResourceRealization s3kl:AdditionalTrainingRequirement s3kl:Skill s3kl:Trade s3kl:SkillLevel s3kl:TaskTarget s3kl:TaskFrequency s3kl:AllocatedMaintenanceLevel s3kl:TimeLimit s3kl:SamplingDefinition s3kl:ThresholdDefinition s3kl:SecurityClass s3kl:SecurityClassification s3kl:Document s3kl:DocumentIssue s3kl:DocumentAssignment s3kl:OrganizationAssignmentRole s3kl:ApplicabilityStatement s3kl:ApplicabilityAssignment s3kl:ApplicabilityEvaluation s3kl:ConditionInstance s3kl:ConditionType s3kl:ConditionStatement s3kl:AuthorizedLife s3kl:DatedClassification s3kl:ClassificationType s3kl:PropertyType ) .

# S3000L v1.1 4.21.3.3 RemarkAssignment <<relationship>> (Req)
# - PUNNING: subProperties of s3kl:remarkAssignment to be of type s3kl:RemarkAssignment
# -          needed for s3kl:ApplicabilityAssignmentItem
s3kl:remarkAssignment
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:RemarkAssignmentItem ;
      rdfs:range s3kl:Remark .
s3kl:RemarkAssignment
      rdf:type owl:Class ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:remarkAssignment ] .

# S3000L v1.1 ========== 4.22 UOF ApplicabilityStatement ==========
# S3000L v1.1 4.22.3.1 ConditionType
s3kl:ConditionType
      rdf:type owl:Class , s3kl:ClassS3000L .

# S3000L v1.1 4.22.3.2 ConditionTypeValue
s3kl:ConditionTypeValue
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:conditionTypeValueOwnedBy ; 
          owl:cardinality 1 ] .
s3kl:conditionTypeValueOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:ConditionTypeValue ;
      rdfs:range s3kl:ConditionType .

# S3000L v1.1 4.22.3.3 ConditionTypeClassValue
s3kl:ConditionTypeClassValue
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:ConditionTypeValue ] . 
# - for ashoreOrAfloadConditionCodeValues
s3kl:ConditionTypeClassValue_ashoreCondition
      rdf:type owl:Class , s3kl:ConditionTypeValue ;
      rdfs:subClassOf s3kl:ConditionTypeClassValue ;
      s3kl:xsdCode "ASH" .
s3kl:ConditionTypeClassValue_afloatCondtion
      rdf:type owl:Class , s3kl:ConditionTypeValue ;
      rdfs:subClassOf s3kl:ConditionTypeClassValue ;
      s3kl:xsdCode "AFL" .
# - for engineeringChangeConditionCodeValues
s3kl:ConditionTypeClassValue_preEngineeringChangeCondition
      rdf:type owl:Class , s3kl:ConditionTypeValue ;
      rdfs:subClassOf s3kl:ConditionTypeClassValue ;
      s3kl:xsdCode "PRE" .
s3kl:ConditionTypeClassValue_postEngineeringChangeCondtion
      rdf:type owl:Class , s3kl:ConditionTypeValue ;
      rdfs:subClassOf s3kl:ConditionTypeClassValue ;
      s3kl:xsdCode "POST" .
# - for maintenanceEnvironmentConditionCodeValues
s3kl:ConditionTypeClassValue_dockedCondition
      rdf:type owl:Class , s3kl:ConditionTypeValue ;
      rdfs:subClassOf s3kl:ConditionTypeClassValue ;
      s3kl:xsdCode "DOC" .
s3kl:ConditionTypeClassValue_indoorCondtion
      rdf:type owl:Class , s3kl:ConditionTypeValue ;
      rdfs:subClassOf s3kl:ConditionTypeClassValue ;
      s3kl:xsdCode "IN" .
s3kl:ConditionTypeClassValue_outdoorCondtion
      rdf:type owl:Class , s3kl:ConditionTypeValue ;
      rdfs:subClassOf s3kl:ConditionTypeClassValue ;
      s3kl:xsdCode "OUT" .
# - for operationalEnvironmentConditionCodeValues
s3kl:ConditionTypeClassValue_arcticCondition
      rdf:type owl:Class , s3kl:ConditionTypeValue ;
      rdfs:subClassOf s3kl:ConditionTypeClassValue ;
      s3kl:xsdCode "ARC" .
s3kl:ConditionTypeClassValue_desertCondtion
      rdf:type owl:Class , s3kl:ConditionTypeValue ;
      rdfs:subClassOf s3kl:ConditionTypeClassValue ;
      s3kl:xsdCode "DES" .
# - for serviceBulletinConditionCodeValues
s3kl:ConditionTypeClassValue_preServiceBulletinCondition
      rdf:type owl:Class , s3kl:ConditionTypeValue ;
      rdfs:subClassOf s3kl:ConditionTypeClassValue ;
      s3kl:xsdCode "PRE" .
s3kl:ConditionTypeClassValue_postServiceBulletinCondtion
      rdf:type owl:Class , s3kl:ConditionTypeValue ;
      rdfs:subClassOf s3kl:ConditionTypeClassValue ;
      s3kl:xsdCode "POST" .

# S3000L v1.1 4.22.3.4 ConditionTypePropertyValue
s3kl:ConditionTypePropertyValue
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:ConditionTypeValue .

# S3000L v1.1 4.22.3.5 ConditionDefinitionItem <<interface>>
s3kl:ConditionDefinitionItem
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:unionOf ( s3kl:ConditionType s3kl:ConditionInstance  ) .

# S3000L v1.1 4.22.3.6 ConditionInstance
s3kl:ConditionInstance
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:hasKey ( s3kl:id ) ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:conditionInstanceOwnedBy ; 
          owl:cardinality 1 ] .
s3kl:conditionInstanceOwnedBy
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:ConditionInstance ;
      rdfs:range s3kl:ConditionType .

# S3000L v1.1 4.22.3.7 ApplicabilityStatement
s3kl:ApplicabilityStatement
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:hasKey ( s3kl:id ) .

# S3000L v1.1 4.22.3.8 DatedApplicabilityStatement
s3kl:DatedApplicabilityStatement
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:ApplicabilityStatement .

# S3000L v1.1 4.22.3.9 ApplicabilityAssignment <<relationship>> (Req)
# - PUNNING: subProperties of s3kl:applicabilityAssignment to be of type s3kl:ApplicabilityAssignment
# -          needed for s3kl:RemarkAssignmentItem
s3kl:applicabilityAssignment
      rdf:type owl:ObjectProperty , owl:InverseFunctionalProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:ApplicabilityAssignmentItem ;
      rdfs:range s3kl:ApplicabilityStatement .
s3kl:ApplicabilityAssignment
      rdf:type owl:Class ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:applicabilityAssignment ] .

# S3000L v1.1 4.22.3.10 ApplicabilityAssignmentItem <<interface>>
# - s3kl:OrganizationAssignmentRole used instead of s3kl:organizationAssignment (punning)
s3kl:ApplicabilityAssignmentItem
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:unionOf ( s3kl:AlternatePartAsDesignedRelationship s3kl:KeyPerformanceIndicator s3kl:CorrectionFactor s3kl:FailureMode s3kl:FailureModeEffect s3kl:SpecialEventOccurrence s3kl:PossibleSpecialEventEffect s3kl:TaskRequirement s3kl:Subtask s3kl:SubtaskTimeline s3kl:SubtaskInZone s3kl:TaskRevisionWarningCautionNote s3kl:SubtaskWarningCautionNote s3kl:SubtaskAcceptanceParameter s3kl:SubtaskCircuitBreakerSettings s3kl:SubtaskCircuitBreakerSettingsTimeline s3kl:TaskResource s3kl:TaskResourceRelationship s3kl:ResourceRealization s3kl:TaskPersonnelResourceCompetence s3kl:TaskTarget s3kl:TaskFrequency s3kl:AllocatedMaintenanceLevel s3kl:TimeLimit s3kl:ThresholdDefinition s3kl:SecurityClassification s3kl:OrganizationAssignmentRole s3kl:DocumentAssignment s3kl:RemarkAssignment s3kl:AuthorizedLife s3kl:ClassificationType s3kl:DescriptorType s3kl:PropertyType ) .

# S3000L v1.1 4.22.3.11 ApplicabilityEvaluation
s3kl:ApplicabilityEvaluation
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:disjointUnionOf ( s3kl:LogicalOperator s3kl:ApplicabilityEvaluationByAssertion s3kl:ApplicabilityEvaluationByApplicabilityStatementReference ) ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:applicabilityEvaluationOwnedBy ; 
          owl:cardinality 1 ] .
s3kl:applicabilityEvaluationOwnedBy # covers "applicabilityExpression", and 2 * "operand"
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:ownedBy ;
      rdfs:domain s3kl:ApplicabilityEvaluation ;
      rdfs:range [
        owl:unionOf ( s3kl:ApplicabilityStatement s3kl:AND s3kl:OR s3kl:NOT ) ] .

# S3000L v1.1 4.22.3.12 ApplicabilityEvaluationByLogcalOperator (Req)
# - covered by s3kl:LogicalOperator as there is exactly one

# S3000L v1.1 4.22.3.13 LogicalOperator
s3kl:LogicalOperator
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:ApplicabilityEvaluation ;
      owl:disjointUnionOf ( s3kl:AND s3kl:OR s3kl:NOT ) .

# S3000L v1.1 4.22.3.14 AND (Req)
s3kl:AND
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:LogicalOperator . 

# S3000L v1.1 4.22.3.15 OR (Req)
s3kl:OR
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:LogicalOperator . 

# S3000L v1.1 4.22.3.16 NOT (Req)
s3kl:NOT
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:LogicalOperator . 

# S3000L v1.1 4.22.3.17 ApplicabilityEvaluationByApplicabilityStatementReference (Req)
s3kl:ApplicabilityEvaluationByApplicabilityStatementReference
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:ApplicabilityEvaluation ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:includedApplicabilityStatement ; 
          owl:cardinality 1 ] .
s3kl:includedApplicabilityStatement
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:ApplicabilityEvaluationByApplicabilityStatementReference ;
      rdfs:range s3kl:ApplicabilityStatement .

# S3000L v1.1 4.22.3.18 ApplicabilityEvaluationByAssertion
s3kl:ApplicabilityEvaluationByAssertion
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:ApplicabilityEvaluation ;
      owl:disjointUnionOf ( s3kl:ApplicabilityEvaluationByAssertionOfClassInstance s3kl:ConditionStatement s3kl:BlockOfSerilaizedItems ) .
                        
# S3000L v1.1 4.22.3.19 ApplicabilityEvaluationByAssertionOfCondition
# - covered by s3kl:ConditionStatement as there is exactly one

# S3000L v1.1 4.22.3.20 ConditionStatement <<relationship>>
# - NOTE: Not a relationship
s3kl:ConditionStatement
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:ApplicabilityEvaluationByAssertion ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:assertCondition ; 
          owl:cardinality 1 ] ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:assertValue ; 
          owl:cardinality 1 ] .
s3kl:assertCondition
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:ConditionStatement ;
      rdfs:range s3kl:ConditionDefinitionItem .
s3kl:assertValue
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:ConditionStatement ;
      rdfs:range s3kl:ConditionTypeValue .

# S3000L v1.1 4.22.3.21 ApplicabilityEvaluationByAssertionOfClassInstance (Req)
s3kl:ApplicabilityEvaluationByAssertionOfClassInstance
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:ApplicabilityEvaluationByAssertion ;
      rdfs:subClassOf [ 
          rdf:type owl:Restriction ;
          owl:onProperty s3kl:assertItem ; 
          owl:cardinality 1 ] .   
s3kl:assertItem
      rdf:type owl:ObjectProperty , owl:FunctionalProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:ApplicabilityEvaluationByAssertionOfClassInstance ;
      rdfs:range s3kl:ApplicabilityAssertItem .
      
# S3000L v1.1 4.22.3.22 ApplicabilityAssertItem <<interface>>
# - NOTE: HardwareElementPartRealization replaced by s3kl:HardwarePartOccurrence
# - NOTE: SoftwareElementPartRealization replaced by s3kl:SoftwarePartOccurrence
s3kl:ApplicabilityAssertItem
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:unionOf ( s3kl:Organization s3kl:Contract s3kl:ProductVariant s3kl:MaintenanceLevel s3kl:MaintenanceLocation s3kl:OperatingLocationType s3kl:OperatingLocation s3kl:BreakdownElement s3kl:PartAsDesigned s3kl:HardwarePartOccurrence s3kl:HardwarePartOccurrence s3kl:AllowedProductConfigurationByConfigurationIdentifier s3kl:ProductUsagePhase ) .

# S3000L v1.1 4.22.3.23 ApplicabilityEvaluationByAssertionOfSerializedItems
# - covered by s3kl:BlockOfSerilaizedItems as there is exactly one

# S3000L v1.1 4.22.3.24 BlockOfSerilaizedItems
s3kl:BlockOfSerilaizedItems
      rdf:type owl:Class , s3kl:ClassS3000L ;
      rdfs:subClassOf s3kl:ApplicabilityEvaluationByAssertion .
s3kl:serializedItem
      rdf:type owl:ObjectProperty , owl:FunctionalProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:BlockOfSerilaizedItems ;
      rdfs:range s3kl:SerializedItem .

# S3000L v1.1 4.22.3.25 SerializedItem
s3kl:SerializedItem
      rdf:type owl:Class , s3kl:ClassS3000L ;
      owl:unionOf ( s3kl:Product s3kl:ProductVariant s3kl:PartAsDesigned ) .

#=================================================================================
#=================================================================================
#=================================================================================

#======= Data Elements ===========================================================
# --- page 2/567 ---
# additionalTrainingRequirementsDescription (Req)
# - use generic s3kl:description

# aggregatedElementDescription
# - use generic s3kl:description

# aggregatedElementType (Req)
s3kl:AggregatedElementType
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:AggregatedElement ] . 
[] a owl:AllDisjointClasses;
  owl:members (s3kl:AggregatedElementType_Family s3kl:AggregatedElementType_Function s3kl:AggregatedElementType_Slot s3kl:AggregatedElementType_System ) .
s3kl:AggregatedElementType_Family
      rdf:type owl:Class , s3kl:AggregatedElementType ;
      rdfs:subClassOf s3kl:AggregatedElement ;
      s3kl:xsdCode "FA" .
s3kl:AggregatedElementType_Function
      rdf:type owl:Class , s3kl:AggregatedElementType ;
      rdfs:subClassOf s3kl:AggregatedElement ;
      s3kl:xsdCode "FU" .
s3kl:AggregatedElementType_Slot
      rdf:type owl:Class , s3kl:AggregatedElementType ;
      rdfs:subClassOf s3kl:AggregatedElement ;
      s3kl:xsdCode "SL" .
s3kl:AggregatedElementType_System
      rdf:type owl:Class , s3kl:AggregatedElementType ;
      rdfs:subClassOf s3kl:AggregatedElement ;
      s3kl:xsdCode "SY" .

# allowedProductConfigurationIdentifier (Req)
s3kl:allowedProductConfigurationIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:domain s3kl:AllowedProductConfigurationByConfigurationIdentifier .
s3kl:AllowedProductConfigurationIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:allowedProductConfigurationIdentifier ] .
s3kl:AllowedProductConfigurationIdentifier_CID
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:AllowedProductConfigurationIdentifier ;
      s3kl:xsdCode "CID" .
s3kl:allowedProductConfigurationIdentifier_CID
      rdf:type owl:DatatypeProperty , s3kl:AllowedProductConfigurationIdentifier_CID ;
      rdfs:subPropertyOf s3kl:allowedProductConfigurationIdentifier .

# applicabilityEndDate
s3kl:applicabilityEndDate
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:DatedApplicabilityStatement ;
      rdfs:subPropertyOf s3kl:dateTimeProperty .

# applicabilityStartDate
s3kl:applicabilityStartDate
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:DatedApplicabilityStatement ;
      rdfs:subPropertyOf s3kl:dateTimeProperty .

# applicabilityStatementDescription (Req)
# - use generic s3kl:description

# applicabilityStatementIdentifier (Req)
s3kl:applicabilityStatementIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:domain s3kl:ApplicabilityStatement .
s3kl:ApplicabilityStatementIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:applicabilityStatementIdentifier ] .

# --- page 3 ---
# applicableSerialNumberRange
s3kl:applicableSerialNumberRange
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:range s3kl:SerialNumberRange .

# authorityToOperateIdentifier
s3kl:authorityToOperateIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:domain s3kl:AuthorityToOperate .
s3kl:AuthorityToOperateIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:authorityToOperateIdentifier ] .
s3kl:AuthorityToOperateIdentifier_EIAC
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:AuthorityToOperateIdentifier ;
      s3kl:xsdCode "EIAC" .
s3kl:authorityToOperateIdentifier_EIAC
      rdf:type owl:DatatypeProperty , s3kl:AuthorityToOperateIdentifier_EIAC ;
      rdfs:subPropertyOf s3kl:authorityToOperateIdentifier .

# breakdownElementEssentiality (Req)
s3kl:BreakdownElementEssentiality
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:BreakdownElement ] . 
s3kl:BreakdownElementEssentiality_1
      rdf:type owl:Class , s3kl:BreakdownElementEssentiality ;
      rdfs:subClassOf s3kl:BreakdownElement ;
      s3kl:xsdCode "1" .
s3kl:BreakdownElementEssentiality_2
      rdf:type owl:Class , s3kl:BreakdownElementEssentiality ;
      rdfs:subClassOf s3kl:BreakdownElement ;
      s3kl:xsdCode "2" .
s3kl:BreakdownElementEssentiality_3
      rdf:type owl:Class , s3kl:BreakdownElementEssentiality ;
      rdfs:subClassOf s3kl:BreakdownElement ;
      s3kl:xsdCode "3" .

# breakdownElementIdentifier (Req)
s3kl:breakdownElementIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:domain s3kl:BreakdownElement .
s3kl:BreakdownElementIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:breakdownElementIdentifier ] .
s3kl:BreakdownElementIdentifier_asdSystemHardwareIdentificationCode 
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:BreakdownElementIdentifier ;
      s3kl:xsdCode "ASD" .
s3kl:breakdownElementIdentifier_asdSystemHardwareIdentificationCode 
      rdf:type owl:DatatypeProperty , s3kl:BreakdownElementIdentifier_asdSystemHardwareIdentificationCode ;
      rdfs:subPropertyOf s3kl:breakdownElementIdentifier .
s3kl:BreakdownElementIdentifier_breakdownElementIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:BreakdownElementIdentifier ;
      s3kl:xsdCode "BEI" .
s3kl:breakdownElementIdentifier_breakdownElementIdentifier
      rdf:type owl:DatatypeProperty , s3kl:BreakdownElementIdentifier_breakdownElementIdentifier ;
      rdfs:subPropertyOf s3kl:breakdownElementIdentifier .
s3kl:BreakdownElementIdentifier_logisticsControlNumber
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:BreakdownElementIdentifier ;
      s3kl:xsdCode "LCN" .
s3kl:breakdownElementIdentifier_logisticsControlNumber
      rdf:type owl:DatatypeProperty , s3kl:BreakdownElementIdentifier_logisticsControlNumber ;
      rdfs:subPropertyOf s3kl:breakdownElementIdentifier .
s3kl:BreakdownElementIdentifier_standardNumberingSystem
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:BreakdownElementIdentifier ;
      s3kl:xsdCode "SNS" .
s3kl:breakdownElementIdentifier_standardNumberingSystem
      rdf:type owl:DatatypeProperty , s3kl:BreakdownElementIdentifier_standardNumberingSystem ;
      rdfs:subPropertyOf s3kl:breakdownElementIdentifier .
s3kl:BreakdownElementIdentifier_itemSequenceNumber
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:BreakdownElementIdentifier ;
      s3kl:xsdCode "ISN" .
s3kl:breakdownElementIdentifier_itemSequenceNumber
      rdf:type owl:DatatypeProperty , s3kl:BreakdownElementIdentifier_itemSequenceNumber ;
      rdfs:subPropertyOf s3kl:breakdownElementIdentifier .
s3kl:BreakdownElementIdentifier_catalogueSequenceNumber
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:BreakdownElementIdentifier ;
      s3kl:xsdCode "CSN" .
s3kl:breakdownElementIdentifier_catalogueSequenceNumber
      rdf:type owl:DatatypeProperty , s3kl:BreakdownElementIdentifier_catalogueSequenceNumber ;
      rdfs:subPropertyOf s3kl:breakdownElementIdentifier .

# breakdownElementName (Req)
# - use generic s3kl:name

# --- page 4 ---
# breakdownElementRelationshipType (Req)
s3kl:BreakdownElementRelationshipType
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:BreakdownElementRevisionRelationship ] . 

s3kl:BreakdownElementRelationshipType_alternate
      rdf:type owl:Class , s3kl:BreakdownElementRelationshipType ;
      rdfs:subClassOf s3kl:BreakdownElementRevisionRelationship ;
      s3kl:xsdCode "ALT" .
s3kl:breakdownElementRevisionRelationship_alternate
      rdf:type owl:ObjectProperty , s3kl:BreakdownElementRelationshipType_alternate ;
      rdfs:subPropertyOf s3kl:breakdownElementRevisionRelationship .

s3kl:BreakdownElementRelationshipType_functionalToPhysical 
      rdf:type owl:Class , s3kl:BreakdownElementRelationshipType ;
      rdfs:subClassOf s3kl:BreakdownElementRevisionRelationship ;
      s3kl:xsdCode "FUPH" .
s3kl:breakdownElementRevisionRelationship_functionalToPhysical 
      rdf:type owl:ObjectProperty , s3kl:BreakdownElementRelationshipType_functionalToPhysical ;
      rdfs:subPropertyOf s3kl:breakdownElementRevisionRelationship .

s3kl:BreakdownElementRelationshipType_accessPoint 
      rdf:type owl:Class , s3kl:BreakdownElementRelationshipType ;
      rdfs:subClassOf s3kl:BreakdownElementRevisionRelationship ;
      s3kl:xsdCode "AP" .
s3kl:breakdownElementRevisionRelationship_accessPoint 
      rdf:type owl:ObjectProperty , s3kl:BreakdownElementRelationshipType_accessPoint ;
      rdfs:subPropertyOf s3kl:breakdownElementRevisionRelationship .

# breakdownElementRevisionCreationDate
s3kl:breakdownElementRevisionCreationDate
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:BreakdownElementRevision ;
      rdfs:subPropertyOf s3kl:dateTimeProperty .

# breakdownElementRevisionIdentifier (Req)
s3kl:breakdownElementRevisionIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:vid ;
      rdfs:domain s3kl:BreakdownElementRevision .
s3kl:BreakdownElementRevisionIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:breakdownElementRevisionIdentifier ] .
s3kl:BreakdownElementRevisionIdentifier_REV 
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:BreakdownElementRevisionIdentifier ;
      s3kl:xsdCode "REV" .
s3kl:breakdownElementRevisionIdentifier_REV 
      rdf:type owl:DatatypeProperty , s3kl:BreakdownElementRevisionIdentifier_REV ;
      rdfs:subPropertyOf s3kl:breakdownElementRevisionIdentifier .
s3kl:BreakdownElementRevisionIdentifier_ISS 
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:BreakdownElementRevisionIdentifier ;
      s3kl:xsdCode "ISS" .
s3kl:breakdownElementRevisionIdentifier_ISS 
      rdf:type owl:DatatypeProperty , s3kl:BreakdownElementRevisionIdentifier_ISS ;
      rdfs:subPropertyOf s3kl:breakdownElementRevisionIdentifier .

# breakdownElementRevisionStatus (Req)
s3kl:BreakdownElementRevisionStatus
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:BreakdownElementRevision ] . 
s3kl:BreakdownElementRevisionStatus_approved
      rdf:type owl:Class , s3kl:BreakdownElementRevisionStatus ;
      rdfs:subClassOf s3kl:BreakdownElementRevision ;
      s3kl:xsdCode "A" .
s3kl:BreakdownElementRevisionStatus_inWork
      rdf:type owl:Class , s3kl:BreakdownElementRevisionStatus ;
      rdfs:subClassOf s3kl:BreakdownElementRevision ;
      s3kl:xsdCode "IW" .

# breakdownElementStructureRelationshipType (Req)
s3kl:BreakdownElementStructureRelationshipType
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:BreakdownElementStructureRelationship ] . 

s3kl:BreakdownElementStructureRelationshipType_requiredItem
      rdf:type owl:Class , s3kl:BreakdownElementStructureRelationshipType ;
      rdfs:subClassOf s3kl:BreakdownElementStructureRelationship ;
      s3kl:xsdCode "MUST" .
s3kl:breakdownElementStructureRelationship_requiredItem
      rdf:type owl:ObjectProperty , s3kl:BreakdownElementStructureRelationshipType_requiredItem ;
      rdfs:subPropertyOf s3kl:breakdownElementStructureRelationship .

s3kl:BreakdownElementStructureRelationshipType_conflictingItem
      rdf:type owl:Class , s3kl:BreakdownElementStructureRelationshipType ;
      rdfs:subClassOf s3kl:BreakdownElementStructureRelationship ;
      s3kl:xsdCode "NOT" .
s3kl:breakdownElementStructureRelationship_conflictingItem
      rdf:type owl:ObjectProperty , s3kl:BreakdownElementStructureRelationshipType_conflictingItem ;
      rdfs:subPropertyOf s3kl:breakdownElementStructureRelationship .

s3kl:BreakdownElementStructureRelationshipType_alternateItem
      rdf:type owl:Class , s3kl:BreakdownElementStructureRelationshipType ;
      rdfs:subClassOf s3kl:BreakdownElementStructureRelationship ;
      s3kl:xsdCode "ALT" .
s3kl:breakdownElementStructureRelationship_alternateItem
      rdf:type owl:ObjectProperty , s3kl:BreakdownElementStructureRelationshipType_alternateItem ;
      rdfs:subPropertyOf s3kl:breakdownElementStructureRelationship .

# breakdownRevisionCreationDate (Req)
s3kl:breakdownRevisionCreationDate
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:dateTimeProperty .

# breakdownRevisionIdentifier (Req)
s3kl:breakdownRevisionIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:vid ;
      rdfs:domain s3kl:BreakdownRevision .
s3kl:BreakdownRevisionIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:breakdownRevisionIdentifier ] .
s3kl:BreakdownRevisionIdentifier_REV
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:BreakdownRevisionIdentifier ;
      s3kl:xsdCode "REV" .
s3kl:breakdownRevisionIdentifier_REV
      rdf:type owl:DatatypeProperty , s3kl:BreakdownRevisionIdentifier_REV ;
      rdfs:subPropertyOf s3kl:breakdownRevisionIdentifier .
s3kl:BreakdownRevisionIdentifier_issueNumber
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:BreakdownRevisionIdentifier ;
      s3kl:xsdCode "ISS" .
s3kl:breakdownRevisionIdentifier_issueNumber
      rdf:type owl:DatatypeProperty , s3kl:BreakdownRevisionIdentifier_issueNumber ;
      rdfs:subPropertyOf s3kl:breakdownRevisionIdentifier .

# --- page 5 ---
# breakdownRevisionStatus
s3kl:BreakdownRevisionStatus
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:BreakdownRevision ] . 
s3kl:BreakdownRevisionStatus_approved
      rdf:type owl:Class , s3kl:BreakdownRevisionStatus ;
      rdfs:subClassOf s3kl:BreakdownRevision ;
      s3kl:xsdCode "A" .
s3kl:BreakdownRevisionStatus_inWork
      rdf:type owl:Class , s3kl:BreakdownRevisionStatus ;
      rdfs:subClassOf s3kl:BreakdownRevision ;
      s3kl:xsdCode "IW" .

# breakdownType (Req)
s3kl:BreakdownType
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:Breakdown ] . 
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:ASDSystemHardwareBreakdown s3kl:FamilyBreakdown s3kl:FunctionalBreakdown s3kl:HybridBreakdown s3kl:InitalProvisioningBreakdown  s3kl:PhysicalBreakdown s3kl:SystemBreakdown s3kl:ZonalBreakdown ) .
s3kl:ASDSystemHardwareBreakdown
      rdf:type owl:Class , s3kl:BreakdownType ;
      rdfs:subClassOf s3kl:Breakdown ;
      s3kl:xsdCode "ASD" .
s3kl:FamilyBreakdown
      rdf:type owl:Class , s3kl:BreakdownType ;
      rdfs:subClassOf s3kl:Breakdown ;
      s3kl:xsdCode "FAM" .
s3kl:FunctionalBreakdown
      rdf:type owl:Class , s3kl:BreakdownType ;
      rdfs:subClassOf s3kl:Breakdown ;
      s3kl:xsdCode "FU" .
s3kl:HybridBreakdown
      rdf:type owl:Class , s3kl:BreakdownType ;
      rdfs:subClassOf s3kl:Breakdown ;
      s3kl:xsdCode "HY" .
s3kl:InitalProvisioningBreakdown
      rdf:type owl:Class , s3kl:BreakdownType ;
      rdfs:subClassOf s3kl:Breakdown ;
      s3kl:xsdCode "IP" .
s3kl:PhysicalBreakdown
      rdf:type owl:Class , s3kl:BreakdownType ;
      rdfs:subClassOf s3kl:Breakdown ;
      s3kl:xsdCode "PH" .
s3kl:SystemBreakdown
      rdf:type owl:Class , s3kl:BreakdownType ;
      rdfs:subClassOf s3kl:Breakdown ;
      s3kl:xsdCode "SY" .
s3kl:ZonalBreakdown
      rdf:type owl:Class , s3kl:BreakdownType ;
      rdfs:subClassOf s3kl:Breakdown ;
      s3kl:xsdCode "ZONE" .

# candidateItemAnalysisActivityDate (Req)
s3kl:candidateItemAnalysisActivityDate
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:dateProperty ;
      rdfs:domain s3kl:CandidateItemAnalysisActivity .

# candidateItemAnalysisActivityIndicator (Req)
s3kl:CandidateItemAnalysisActivityIndicator
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:CandidateItemAnalysisActivity ] . 
[] a owl:AllDisjointClasses;
  owl:members (s3kl:CandidateItemAnalysisActivityIndicator_Selected s3kl:CandidateItemAnalysisActivityIndicator_Rejected s3kl:CandidateItemAnalysisActivityIndicator_Open ) .
s3kl:CandidateItemAnalysisActivityIndicator_Selected
      rdf:type owl:Class , s3kl:CandidateItemAnalysisActivityIndicator ;
      rdfs:subClassOf s3kl:CandidateItemAnalysisActivity ;
      s3kl:xsdCode "S" .
s3kl:CandidateItemAnalysisActivityIndicator_Rejected
      rdf:type owl:Class , s3kl:CandidateItemAnalysisActivityIndicator ;
      rdfs:subClassOf s3kl:CandidateItemAnalysisActivity ;
      s3kl:xsdCode "R" .
s3kl:CandidateItemAnalysisActivityIndicator_Open
      rdf:type owl:Class , s3kl:CandidateItemAnalysisActivityIndicator ;
      rdfs:subClassOf s3kl:CandidateItemAnalysisActivity ;
      s3kl:xsdCode "O" .

# candidateItemAnalysisActivityRationale (Req)
s3kl:candidateItemAnalysisActivityRationale
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:description ;
      rdfs:domain s3kl:CandidateItemAnalysisActivity .

# --- page 6 ---
# candidateItemAnalysisActivityStatus (Req)
s3kl:CandidateItemAnalysisActivityStatus
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:CandidateItemAnalysisActivity ] . 
[] a owl:AllDisjointClasses;
  owl:members (s3kl:CandidateItemAnalysisActivityStatus_NotStarted s3kl:CandidateItemAnalysisActivityStatus_Ongoing s3kl:CandidateItemAnalysisActivityStatus_Completed ) .
s3kl:CandidateItemAnalysisActivityStatus_NotStarted
      rdf:type owl:Class , s3kl:CandidateItemAnalysisActivityStatus ;
      rdfs:subClassOf s3kl:CandidateItemAnalysisActivity ;
      s3kl:xsdCode "NS" .
s3kl:CandidateItemAnalysisActivityStatus_Ongoing
      rdf:type owl:Class , s3kl:CandidateItemAnalysisActivityStatus ;
      rdfs:subClassOf s3kl:CandidateItemAnalysisActivity ;
      s3kl:xsdCode "O" .
s3kl:CandidateItemAnalysisActivityStatus_Completed
      rdf:type owl:Class , s3kl:CandidateItemAnalysisActivityStatus ;
      rdfs:subClassOf s3kl:CandidateItemAnalysisActivity ;
      s3kl:xsdCode "C" .

# changeRequestDescription
# - use generic s3kl:description

# changeRequestIdentifier
s3kl:changeRequestIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:domain s3kl:Product .
s3kl:ChangeRequestIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:changeRequestIdentifier ] .
s3kl:ChangeRequestIdentifier_CRID  
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ChangeRequestIdentifier ;
      s3kl:xsdCode "CRID" .
s3kl:changeRequestIdentifier_CRID 
      rdf:type owl:DatatypeProperty , s3kl:ChangeRequestIdentifier_CRID ;
      rdfs:subPropertyOf s3kl:changeRequestIdentifier .

# circuitBreakerIdentifier
s3kl:circuitBreakerIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:domain s3kl:CircuitBreaker .
s3kl:CircuitBreakerIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:circuitBreakerIdentifier ] .
s3kl:CircuitBreakerIdentifier_CBID
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:CircuitBreakerIdentifier ;
      s3kl:xsdCode "CBID" .
s3kl:circuitBreakerIdentifier_CBID
      rdf:type owl:DatatypeProperty , s3kl:CircuitBreakerIdentifier_CBID ;
      rdfs:subPropertyOf s3kl:circuitBreakerIdentifier .

# circuitBreakerName
# - use generic s3kl:name

# circuitBreakerType
s3kl:CircuitBreakerType
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:CircuitBreaker ] . 
[] a owl:AllDisjointClasses;
  owl:members (s3kl:CircuitBreakerType_Electronic s3kl:CircuitBreakerType_ElectroMechanical s3kl:CircuitBreakerType_Dummy ) .
s3kl:CircuitBreakerType_Electronic
      rdf:type owl:Class , s3kl:CircuitBreakerType ;
      rdfs:subClassOf s3kl:CircuitBreaker ;
      s3kl:xsdCode "ELTRO" .
s3kl:CircuitBreakerType_ElectroMechanical
      rdf:type owl:Class , s3kl:CircuitBreakerType ;
      rdfs:subClassOf s3kl:CircuitBreaker ;
      s3kl:xsdCode "ELMEC" .
s3kl:CircuitBreakerType_Dummy
      rdf:type owl:Class , s3kl:CircuitBreakerType ;
      rdfs:subClassOf s3kl:CircuitBreaker ;
      s3kl:xsdCode "CLIP" .

# --- page 7 ---
# circuitBreakerState
s3kl:CircuitBreakerState
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:SubtaskCircuitBreakerSettings ] . 
[] a owl:AllDisjointClasses;
  owl:members (s3kl:CircuitBreakerState_Open s3kl:CircuitBreakerState_Close s3kl:CircuitBreakerState_VerifyOpen s3kl:CircuitBreakerState_VerifyClose ) .
s3kl:CircuitBreakerState_Open
      rdf:type owl:Class , s3kl:CircuitBreakerState ;
      rdfs:subClassOf s3kl:SubtaskCircuitBreakerSettings ;
      s3kl:xsdCode "O" .
s3kl:CircuitBreakerState_Close
      rdf:type owl:Class , s3kl:CircuitBreakerState ;
      rdfs:subClassOf s3kl:SubtaskCircuitBreakerSettings ;
      s3kl:xsdCode "C" .
s3kl:CircuitBreakerState_VerifyOpen
      rdf:type owl:Class , s3kl:CircuitBreakerState ;
      rdfs:subClassOf s3kl:SubtaskCircuitBreakerSettings ;
      s3kl:xsdCode "VO" .
s3kl:CircuitBreakerState_VerifyClose
      rdf:type owl:Class , s3kl:CircuitBreakerState ;
      rdfs:subClassOf s3kl:SubtaskCircuitBreakerSettings ;
      s3kl:xsdCode "VC" .

# conditionInstanceDescription
# - use generic s3kl:description

# conditionInstanceIdentifier
s3kl:conditionInstanceIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:domain s3kl:ConditionInstance .
s3kl:ConditionInstanceIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:conditionInstanceIdentifier ] .
s3kl:ConditionInstanceIdentifier_CI
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ConditionInstanceIdentifier ;
      s3kl:xsdCode "CI" .
s3kl:conditionInstanceIdentifier_CI
      rdf:type owl:DatatypeProperty , s3kl:ConditionInstanceIdentifier_CI ;
      rdfs:subPropertyOf s3kl:conditionInstanceIdentifier .
s3kl:ConditionInstanceIdentifier_SB
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ConditionInstanceIdentifier ;
      s3kl:xsdCode "SB" .
s3kl:conditionInstanceIdentifier_SB
      rdf:type owl:DatatypeProperty , s3kl:conditionInstanceIdentifier_SB ;
      rdfs:subPropertyOf s3kl:conditionInstanceIdentifier .

# conditionInstanceName
# - use generic s3kl:name

# conditionTypeClassValue
s3kl:ConditionTypeClassValueClass
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:ConditionTypeClassValue ] . 
[] a owl:AllDisjointClasses;
  owl:members (s3kl:ServiceBulletinConditionTypeValue s3kl:AshoreOrAfloatConditionTypeValue s3kl:OperationalEnvironmentConditionTypeValue s3kl:MaintenanceEnvironmentConditionTypeValue ) .
s3kl:ServiceBulletinConditionTypeValue
      rdf:type owl:Class , s3kl:ConditionTypeClassValue ;
      rdfs:subClassOf s3kl:ConditionTypeClassValueClass .
s3kl:AshoreOrAfloatConditionTypeValue
      rdf:type owl:Class , s3kl:ConditionTypeClassValue ;
      rdfs:subClassOf s3kl:ConditionTypeClassValueClass .
s3kl:OperationalEnvironmentConditionTypeValue
      rdf:type owl:Class , s3kl:ConditionTypeClassValue ;
      rdfs:subClassOf s3kl:ConditionTypeClassValueClass .
s3kl:MaintenanceEnvironmentConditionTypeValue
      rdf:type owl:Class , s3kl:ConditionTypeClassValue ;
      rdfs:subClassOf s3kl:ConditionTypeClassValueClass .

# conditionTypeDescription
# - use generic s3kl:description

# --- page 8 ---
# conditionTypeName
# - NOT TO use generic s3kl:name, this is a classification !
s3kl:ConditionTypeName
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:ConditionType ] . 
[] a owl:AllDisjointClasses;
  owl:members (s3kl:ConditionTypeName_serviceBulletinCondition s3kl:ConditionTypeName_ashoreOrAfloadCondition s3kl:ConditionTypeName_operationalEnvironmentCondition s3kl:ConditionTypeName_maintenanceEnvironmentCondition s3kl:ConditionTypeName_windSpeedCondition ) .
s3kl:ConditionTypeName_serviceBulletinCondition
      rdf:type owl:Class , s3kl:ConditionTypeName ;
      rdfs:subClassOf s3kl:ConditionType ;
      s3kl:xsdCode "SB" .
s3kl:ConditionTypeName_ashoreOrAfloadCondition
      rdf:type owl:Class , s3kl:ConditionTypeName ;
      rdfs:subClassOf s3kl:ConditionType ;
      s3kl:xsdCode "AA" .
s3kl:ConditionTypeName_operationalEnvironmentCondition
      rdf:type owl:Class , s3kl:ConditionTypeName ;
      rdfs:subClassOf s3kl:ConditionType ;
      s3kl:xsdCode "OP" .
s3kl:ConditionTypeName_maintenanceEnvironmentCondition
      rdf:type owl:Class , s3kl:ConditionTypeName ;
      rdfs:subClassOf s3kl:ConditionType ;
      s3kl:xsdCode "MA" .
s3kl:ConditionTypeName_windSpeedCondition
      rdf:type owl:Class , s3kl:ConditionTypeName ;
      rdfs:subClassOf s3kl:ConditionType ;
      s3kl:xsdCode "WS" .

# conditionTypePropertyValue
s3kl:conditionTypePropertyValue
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:ConditionTypePropertyValue .

# containedSubstanceJustificationDescription (Req)
# - use generic s3kl:description

# contractedBlockOfSerializedItems
s3kl:contractedBlockOfSerializedItems
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:range s3kl:SerialNumberRange .

# contractIdentifier (Req)
s3kl:contractIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:domain s3kl:Contract .
s3kl:ContractIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:contractIdentifier ] .
s3kl:ContractIdentifier_CID
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ContractIdentifier ;
      s3kl:xsdCode "CID" .
s3kl:contractIdentifier_CID
      rdf:type owl:DatatypeProperty , s3kl:ContractIdentifier_CID ;
      rdfs:subPropertyOf s3kl:contractIdentifier .

# contractRelationshipType
s3kl:ContractRelationshipType
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:ContractRelationship ] . 

s3kl:ContractRelationshipType_subcontract 
      rdf:type s3kl:ContractRelationshipType ;
      rdfs:subPropertyOf s3kl:contractRelationship ;
      s3kl:xsdCode "SUBC" .
s3kl:contractRelationship_subcontract 
      rdf:type owl:ObjectProperty , s3kl:ContractRelationshipType_subcontract ;
      rdfs:subPropertyOf s3kl:contractRelationship .

s3kl:ContractRelationshipType_relatedContract 
      rdf:type s3kl:ContractRelationshipType ;
      rdfs:subPropertyOf s3kl:contractRelationship ;
      s3kl:xsdCode "RELC" .
s3kl:contractRelationship_relatedContract
      rdf:type owl:ObjectProperty , s3kl:ContractRelationshipType_relatedContract ;
      rdfs:subPropertyOf s3kl:contractRelationship .

# --- page 9 ---
# correctionFactor (Req)
s3kl:correctionFactor
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:CorrectionFactor ;
      rdfs:range xsd:double .

# correctionFactorDate
s3kl:correctionFactorDate
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:dateProperty ;
      rdfs:domain s3kl:CorrectionFactor .

# correctionFactorJustification
s3kl:correctionFactorJustification
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:description ;
      rdfs:domain s3kl:CorrectionFactor .

# damageDescription
# - use generic s3kl:description

# damageFamily
s3kl:DamageFamily
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:Damage ] . 

# dataModuleCode
s3kl:dataModuleCode
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:domain s3kl:S1000DDataModule .
s3kl:DataModuleCode
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:dataModuleCode ] .
s3kl:DataModuleCode_DMC
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:DataModuleCode ;
      s3kl:xsdCode "DMC" .
s3kl:dataModuleCode_DMC
      rdf:type owl:DatatypeProperty , s3kl:DataModuleCode_DMC ;
      rdfs:subPropertyOf s3kl:dataModuleCode .

# dataModuleInfoname
# - use generic s3kl:name

# dataModuleIssueNumber
s3kl:dataModuleIssueNumber
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:vid ;
      rdfs:domain s3kl:S1000DDataModuleIssue .
s3kl:DataModuleIssueNumber
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:dataModuleIssueNumber ] .
s3kl:DataModuleIssueNumber_revisionIdentification
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:DataModuleIssueNumber ;
      s3kl:xsdCode "REV" .
s3kl:dataModuleIssueNumber_revisionIdentification
      rdf:type owl:DatatypeProperty , s3kl:DataModuleIssueNumber_revisionIdentification ;
      rdfs:subPropertyOf s3kl:dataModuleIssueNumber .
s3kl:DataModuleIssueNumber_issueNumber
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:DataModuleIssueNumber ;
      s3kl:xsdCode "ISS" .
s3kl:dataModuleIssueNumber_issueNumber
      rdf:type owl:DatatypeProperty , s3kl:DataModuleIssueNumber_issueNumber ;
      rdfs:subPropertyOf s3kl:dataModuleIssueNumber .

# detectionMeanAlarmDescription
s3kl:detectionMeanAlarmDescription
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:description ;
      rdfs:domain s3kl:DetectionMeanAlarm .

# --- page 10/ ---
# detectionMeanDescription
s3kl:detectionMeanDescription
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:description ;
      rdfs:domain s3kl:DetectionMeanAlarm .

# detectionMeanFalseAlarmPresentation
# - renamed to detectionMeanAlarmPresentation as written in clause clause "4.11.3.12 DetectionMeanAlarm" and s3000l_1-1_lsa_dataset.xsd 
s3kl:detectionMeanAlarmPresentation
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:description ;
      rdfs:domain s3kl:DetectionMeanAlarm .

# detectionMeanFalseAlarmRate
s3kl:detectionMeanFalseAlarmRate
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:DetectionMeanAlarm .

# detectionMeanType
s3kl:DetectionMeanType
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:ConditionType ] . 
[] a owl:AllDisjointClasses;
  owl:members (s3kl:PowerOnBuiltInTest s3kl:ContinuousBuiltInTest s3kl:InitiatedBuiltInTest s3kl:GroundSupportEquipment ) .
s3kl:PowerOnBuiltInTest
      rdf:type owl:Class , s3kl:ConditionTypeName ;
      rdfs:subClassOf s3kl:DetectionMeanCapability ;
      s3kl:xsdCode "PBIT" .
s3kl:ContinuousBuiltInTest
      rdf:type owl:Class , s3kl:ConditionTypeName ;
      rdfs:subClassOf s3kl:DetectionMeanCapability ;
      s3kl:xsdCode "CBIT" .
s3kl:InitiatedBuiltInTest
      rdf:type owl:Class , s3kl:ConditionTypeName ;
      rdfs:subClassOf s3kl:DetectionMeanCapability ;
      s3kl:xsdCode "IBIT" .
s3kl:GroundSupportEquipment
      rdf:type owl:Class , s3kl:ConditionTypeName ;
      rdfs:subClassOf s3kl:DetectionMeanCapability ;
      s3kl:xsdCode "GSE" .

# directMaintenanceCost
s3kl:directMaintenanceCost
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:DirectMaintenanceCost .

# --- page 11/ ---
# documentAssignmentRole (Req)
s3kl:DocumentAssignmentRole
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:DocumentAssignment ] . 

s3kl:DocumentAssignmentRole_documentReference
      rdf:type owl:Class , s3kl:DocumentAssignmentRole ;
      rdfs:subClassOf s3kl:DocumentAssignment ;
      s3kl:xsdCode "REF" .
s3kl:documentAssignment_documentReference
      rdf:type owl:ObjectProperty , s3kl:DocumentAssignmentRole_documentReference ;
      rdfs:subPropertyOf s3kl:documentAssignment .

s3kl:DocumentAssignmentRole_drawingReference 
      rdf:type owl:Class , s3kl:DocumentAssignmentRole ;
      rdfs:subClassOf s3kl:DocumentAssignment ;
      s3kl:xsdCode "DRW" .
s3kl:documentAssignment_drawingReference
      rdf:type owl:ObjectProperty , s3kl:DocumentAssignmentRole_drawingReference ;
      rdfs:subPropertyOf s3kl:documentAssignment .

s3kl:DocumentAssignmentRole_designDocumentReference 
      rdf:type owl:Class , s3kl:DocumentAssignmentRole ;
      rdfs:subClassOf s3kl:DocumentAssignment ;
      s3kl:xsdCode "DSG" .
s3kl:documentAssignment_designDocumentReference
      rdf:type owl:ObjectProperty , s3kl:DocumentAssignmentRole_designDocumentReference ;
      rdfs:subPropertyOf s3kl:documentAssignment .

s3kl:DocumentAssignmentRole_directiveDocumentReference
      rdf:type owl:Class , s3kl:DocumentAssignmentRole ;
      rdfs:subClassOf s3kl:DocumentAssignment ;
      s3kl:xsdCode "DIR" .
s3kl:documentAssignment_directiveDocumentReference
      rdf:type owl:ObjectProperty , s3kl:DocumentAssignmentRole_directiveDocumentReference ;
      rdfs:subPropertyOf s3kl:documentAssignment .

s3kl:DocumentAssignmentRole_sourceDocumentReference
      rdf:type owl:Class , s3kl:DocumentAssignmentRole ;
      rdfs:subClassOf s3kl:DocumentAssignment ;
      s3kl:xsdCode "SCE" .
s3kl:documentAssignment_sourceDocumentReference
      rdf:type owl:ObjectProperty , s3kl:DocumentAssignmentRole_sourceDocumentReference ;
      rdfs:subPropertyOf s3kl:documentAssignment .

s3kl:DocumentAssignmentRole_verificationDocumentReference
      rdf:type owl:Class , s3kl:DocumentAssignmentRole ;
      rdfs:subClassOf s3kl:DocumentAssignment ;
      s3kl:xsdCode "VER" .
s3kl:documentAssignment_verificationDocumentReference
      rdf:type owl:ObjectProperty , s3kl:DocumentAssignmentRole_verificationDocumentReference ;
      rdfs:subPropertyOf s3kl:documentAssignment .


# documentIdentifier (Req)
s3kl:documentIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:domain s3kl:ExternalDocument .
s3kl:DocumentIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:documentIdentifier ] .
s3kl:DocumentIdentifier_DOCID
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:DocumentIdentifier ;
      s3kl:xsdCode "DOCID" .
s3kl:documentIdentifier_DOCID
      rdf:type owl:DatatypeProperty , s3kl:DocumentIdentifier_DOCID ;
      rdfs:subPropertyOf s3kl:documentIdentifier .

# documentIssueDate
s3kl:documentIssueDate
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:dateTimeProperty .

# documentIssueIdentifier
s3kl:documentIssueIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:domain s3kl:ExternalDocumentIssue .
s3kl:DocumentIssueIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:documentIssueIdentifier ] .
s3kl:DocumentIssueIdentifier_revisionIdentification
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:DocumentIssueIdentifier ;
      s3kl:xsdCode "REV" .
s3kl:documentIssueIdentifier_revisionIdentification
      rdf:type owl:DatatypeProperty , s3kl:DocumentIssueIdentifier_revisionIdentification ;
      rdfs:subPropertyOf s3kl:documentIssueIdentifier .
s3kl:DocumentIssueIdentifier_issueNumber
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:DocumentIssueIdentifier ;
      s3kl:xsdCode "ISS" .
s3kl:documentIssueIdentifier_issueNumber
      rdf:type owl:DatatypeProperty , s3kl:DocumentIssueIdentifier_issueNumber ;
      rdfs:subPropertyOf s3kl:documentIssueIdentifier .

# documentLocation
s3kl:documentLocation
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:description ;
      rdfs:domain s3kl:ExternalDocument .

# documentPortion
s3kl:documentPortion
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:description .

# documentTitle (Req)
s3kl:documentTitle
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:description ;
      rdfs:domain s3kl:ExternalDocument .

# --- page 12/ ---
# documentType
s3kl:DocumentType
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassOfInformationObject ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:ExternalDocument ] . 
[] a owl:AllDisjointClasses;
  owl:members (s3kl:DocumentType_TechnicalReport s3kl:DocumentType_Standard s3kl:DocumentType_Drawing ) .
s3kl:DocumentType_TechnicalReport
      rdf:type owl:Class , s3kl:DocumentType ;
      rdfs:subClassOf s3kl:ExternalDocument ;
      s3kl:xsdCode "TR" .
s3kl:DocumentType_Standard
      rdf:type owl:Class , s3kl:DocumentType ;
      rdfs:subClassOf s3kl:ExternalDocument ;
      s3kl:xsdCode "STD" .
s3kl:DocumentType_Drawing
      rdf:type owl:Class , s3kl:DocumentType ;
      rdfs:subClassOf s3kl:ExternalDocument ;
      s3kl:xsdCode "DRW" .

# downTime
s3kl:downTime
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:DownTime .

# eventThresholdNumberOfEventOccurrences (Req)
s3kl:eventThresholdNumberOfEventOccurrences
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:integerProperty .

# failureModeDetectionAbilityDescription (Req)
s3kl:failureModeDetectionAbilityDescription
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:description ;
      rdfs:domain s3kl:FailureMode .

# Added per request in bug #2179 to for simple descriptions to be able to 
#   separate from s3kl:failureModeDetectionAbilityDescription and s3kl:failureModeLocalizationAbilityDescription
s3kl:failureModeDescription
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:description ;
      rdfs:domain s3kl:FailureMode .

s3kl:failureModeLocalizationAbilityDescription
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:description ;
      rdfs:domain s3kl:FailureMode .

# failureModeDetectionAbilityRating (Req)
s3kl:FailureModeDetectionAbilityRating
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:DatedClassification , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:FailureMode ] . 
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:FailureModeDetectionAbilityRating_HighLikelihood s3kl:FailureModeDetectionAbilityRating_ModeratelyHighLikelihood s3kl:FailureModeDetectionAbilityRating_MediumLikelihood s3kl:FailureModeDetectionAbilityRating_ModeratelyLowLikelihood s3kl:FailureModeDetectionAbilityRating_LowLikelihood ) .
s3kl:FailureModeDetectionAbilityRating_HighLikelihood
      rdf:type owl:Class , s3kl:FailureModeDetectionAbilityRating ;
      rdfs:subClassOf s3kl:FailureMode ;
      s3kl:xsdCode "HIGH" .
s3kl:FailureModeDetectionAbilityRating_ModeratelyHighLikelihood
      rdf:type owl:Class , s3kl:FailureModeDetectionAbilityRating ;
      rdfs:subClassOf s3kl:FailureMode ;
      s3kl:xsdCode "MHIGH" .
s3kl:FailureModeDetectionAbilityRating_MediumLikelihood
      rdf:type owl:Class , s3kl:FailureModeDetectionAbilityRating ;
      rdfs:subClassOf s3kl:FailureMode ;
      s3kl:xsdCode "MED" .
s3kl:FailureModeDetectionAbilityRating_ModeratelyLowLikelihood
      rdf:type owl:Class , s3kl:FailureModeDetectionAbilityRating ;
      rdfs:subClassOf s3kl:FailureMode ;
      s3kl:xsdCode "MLOW" .
s3kl:FailureModeDetectionAbilityRating_LowLikelihood
      rdf:type owl:Class , s3kl:FailureModeDetectionAbilityRating ;
      rdfs:subClassOf s3kl:FailureMode ;
      s3kl:xsdCode "LOW" .

# failureModeDetectionRate
# - note on punning: subproperty of s3kl:failureModeDetection needed; being a member of class s3kl:FailureModeDetection
s3kl:failureModeDetectionRate
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:FailureModeDetection .

# --- page 13/ ---
# failureModeEffect (Req)
# - use generic s3kl:description

# --- page 14/ ---
# failureModeEffectLevel (Req)
s3kl:FailureModeEffectLevel
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:HigherFailureModeEffect ] . 
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:FailureModeEffectLevel_NextHigherEffect s3kl:FailureModeEffectLevel_EndFailure ) .
s3kl:FailureModeEffectLevel_NextHigherEffect
      rdf:type owl:Class , s3kl:FailureModeEffectLevel ;
      rdfs:subClassOf s3kl:HigherFailureModeEffect ;
      s3kl:xsdCode "NH" .
s3kl:FailureModeEffectLevel_EndFailure
      rdf:type owl:Class , s3kl:FailureModeEffectLevel ;
      rdfs:subClassOf s3kl:HigherFailureModeEffect ;
      s3kl:xsdCode "EI" .

# failureModeFailureRate
s3kl:failureModeFailureRate
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:FailureMode .

# failureModeIdentifier (Req)
s3kl:failureModeIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:domain s3kl:FailureMode .
s3kl:FailureModeIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:failureModeIdentifier ] .
s3kl:FailureModeIdentifier_FMID
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:FailureModeIdentifier ;
      s3kl:xsdCode "FMID" .
s3kl:failureModeIdentifier_FMID
      rdf:type owl:DatatypeProperty , s3kl:FailureModeIdentifier_FMID ;
      rdfs:subPropertyOf s3kl:failureModeIdentifier .

# failureModeIsolationRate
s3kl:failureModeIsolationRate
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:FailureMode .

# --- page 15/ ---
# failureModeLocalizationAbilityDescription (Req)
# - use generic s3kl:description

# failureModeLocalizationAbilityRating (Req)
s3kl:FailureModeLocalizationAbilityRating
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:DatedClassification , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:FailureMode ] . 
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:FailureModeLocalizationAbilityRating_HighLikelihood s3kl:FailureModeLocalizationAbilityRating_ModeratelyHighLikelihood s3kl:FailureModeLocalizationAbilityRating_MediumLikelihood s3kl:FailureModeLocalizationAbilityRating_ModeratelyLowLikelihood s3kl:FailureModeLocalizationAbilityRating_LowLikelihood ) .
s3kl:FailureModeLocalizationAbilityRating_HighLikelihood
      rdf:type owl:Class , s3kl:FailureModeLocalizationAbilityRating ;
      rdfs:subClassOf s3kl:FailureMode ;
      s3kl:xsdCode "HIGH" .
s3kl:FailureModeLocalizationAbilityRating_ModeratelyHighLikelihood
      rdf:type owl:Class , s3kl:FailureModeLocalizationAbilityRating ;
      rdfs:subClassOf s3kl:FailureMode ;
      s3kl:xsdCode "MHIGH" .
s3kl:FailureModeLocalizationAbilityRating_MediumLikelihood
      rdf:type owl:Class , s3kl:FailureModeLocalizationAbilityRating ;
      rdfs:subClassOf s3kl:FailureMode ;
      s3kl:xsdCode "MED" .
s3kl:FailureModeLocalizationAbilityRating_ModeratelyLowLikelihood
      rdf:type owl:Class , s3kl:FailureModeLocalizationAbilityRating ;
      rdfs:subClassOf s3kl:FailureMode ;
      s3kl:xsdCode "MLOW" .
s3kl:FailureModeLocalizationAbilityRating_LowLikelihood
      rdf:type owl:Class , s3kl:FailureModeLocalizationAbilityRating ;
      rdfs:subClassOf s3kl:FailureMode ;
      s3kl:xsdCode "LOW" .

# failureRate
s3kl:failureRate
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:FailureRate .

# failuresPerOperatingHour
s3kl:failuresPerOperatingHour
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:FailuresPerOperatingHour .

# fixedResourceMarker (Req)
s3kl:fixedResourceMarker
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:booleanProperty .

# --- page 16/582 ---
# functionalFailureDescription
# - use generic s3kl:description

# functionalFailureEffectCriticality
s3kl:FunctionalFailureEffectCriticality
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:FunctionalFailure ] . 

# hardwareElementRepairability (Req)
s3kl:HardwareElementRepairability
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:HardwareElementRevision ] . 
s3kl:HardwareElementRepairability_NonRepairable
      rdf:type owl:Class , s3kl:HardwareElementRepairability ;
      rdfs:subClassOf s3kl:HardwareElementRevision ;
      s3kl:xsdCode "N" .
s3kl:HardwareElementRepairability_PartiallyRepairable
      rdf:type owl:Class , s3kl:HardwareElementRepairability ;
      rdfs:subClassOf s3kl:HardwareElementRevision ;
      s3kl:xsdCode "P" .
s3kl:HardwareElementRepairability_Repairable
      rdf:type owl:Class , s3kl:HardwareElementRepairability ;
      rdfs:subClassOf s3kl:HardwareElementRevision ;
      s3kl:xsdCode "R" .

# hardwareElementRepairabilityStrategy
s3kl:HardwareElementRepairabilityStrategy
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:HardwareElementRevision ] . 
s3kl:HardwareElementRepairabilityStrategy_repair
      rdf:type owl:Class , s3kl:HardwareElementRepairabilityStrategy ;
      rdfs:subClassOf s3kl:HardwareElementRevision ;
      s3kl:xsdCode "REP" .
s3kl:HardwareElementRepairabilityStrategy_discard
      rdf:type owl:Class , s3kl:HardwareElementRepairabilityStrategy ;
      rdfs:subClassOf s3kl:HardwareElementRevision ;
      s3kl:xsdCode "DISC" .
s3kl:HardwareElementRepairabilityStrategy_notApplicable
      rdf:type owl:Class , s3kl:HardwareElementRepairabilityStrategy ;
      rdfs:subClassOf s3kl:HardwareElementRevision ;
      s3kl:xsdCode "NA" .

# hardwareElementFunctionalReplaceability (Req)
# - named only "hardwareElementReplaceability"  (without "function") in XSD
s3kl:HardwareElementFunctionalReplaceability
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:HardwareElementRevision ] . 
s3kl:HardwareElementFunctionalReplaceability_notReplaceable
      rdf:type owl:Class , s3kl:HardwareElementFunctionalReplaceability ;
      rdfs:subClassOf s3kl:HardwareElementRevision ;
      s3kl:xsdCode "N" .
s3kl:HardwareElementFunctionalReplaceability_replaceable
      rdf:type owl:Class , s3kl:HardwareElementFunctionalReplaceability ;
      rdfs:subClassOf s3kl:HardwareElementRevision ;
      s3kl:xsdCode "R" .
s3kl:HardwareElementFunctionalReplaceability_notApplicable
      rdf:type owl:Class , s3kl:HardwareElementFunctionalReplaceability ;
      rdfs:subClassOf s3kl:HardwareElementRevision ;
      s3kl:xsdCode "NA" .

# --- page 17/ ---
# hardwareElementFunctionalReplaceabilityStrategy (Req)
# - renamed to hardwareElementReplaceabilityStrategy in XSD (but replaceabilityStrategyCodeValues is also there ???)
s3kl:HardwareElementFunctionalReplaceabilityStrategy
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:HardwareElementRevision ] . 
s3kl:HardwareElementFunctionalReplaceabilityStrategy_lineReplaceable
      rdf:type owl:Class , s3kl:HardwareElementFunctionalReplaceabilityStrategy ;
      rdfs:subClassOf s3kl:HardwareElementRevision ;
      s3kl:xsdCode "LRU" .
s3kl:HardwareElementFunctionalReplaceabilityStrategy_shopReplaceable
      rdf:type owl:Class , s3kl:HardwareElementFunctionalReplaceabilityStrategy ;
      rdfs:subClassOf s3kl:HardwareElementRevision ;
      s3kl:xsdCode "SRU" .
s3kl:HardwareElementFunctionalReplaceabilityStrategy_notApplicable
      rdf:type owl:Class , s3kl:HardwareElementFunctionalReplaceabilityStrategy ;
      rdfs:subClassOf s3kl:HardwareElementRevision ;
      s3kl:xsdCode "NA" .

# hardwareElementStructuralIndicator (Req)
s3kl:HardwareElementStructuralIndicator
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:HardwareElementRevision ] . 
[] a owl:AllDisjointClasses;
  owl:members (s3kl:HardwareElementStructuralIndicator_SignificantItem s3kl:HardwareElementStructuralIndicator_Item s3kl:HardwareElementStructuralIndicator_Details s3kl:HardwareElementStructuralIndicator_NotApplicable ) .
s3kl:HardwareElementStructuralIndicator_SignificantItem
      rdf:type owl:Class , s3kl:HardwareElementStructuralIndicator ;
      rdfs:subClassOf s3kl:HardwareElementRevision ;
      s3kl:xsdCode "SSI" .
s3kl:HardwareElementStructuralIndicator_Item
      rdf:type owl:Class , s3kl:HardwareElementStructuralIndicator ;
      rdfs:subClassOf s3kl:HardwareElementRevision ;
      s3kl:xsdCode "SI" .
s3kl:HardwareElementStructuralIndicator_Details
      rdf:type owl:Class , s3kl:HardwareElementStructuralIndicator ;
      rdfs:subClassOf s3kl:HardwareElementRevision ;
      s3kl:xsdCode "SD" .
s3kl:HardwareElementStructuralIndicator_NotApplicable
      rdf:type owl:Class , s3kl:HardwareElementStructuralIndicator ;
      rdfs:subClassOf s3kl:HardwareElementRevision ;
      s3kl:xsdCode "NA" .

# --- page 18/ ---
# hardwareElementType (Req)
s3kl:HardwareElementType
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:HardwareElement ] . 
[] a owl:AllDisjointClasses;
  owl:members (s3kl:HardwareElementType_Equipment s3kl:HardwareElementType_AccessPoint s3kl:HardwareElementType_Door s3kl:HardwareElementType_Panel s3kl:HardwareElementType_ElectricalPanel ) .
s3kl:HardwareElementType_AccessPoint
      rdf:type owl:Class , s3kl:HardwareElementType ;
      rdfs:subClassOf s3kl:HardwareElement ;
      s3kl:xsdCode "AP" .
s3kl:HardwareElementType_Door
      rdf:type owl:Class , s3kl:HardwareElementType ;
      rdfs:subClassOf s3kl:HardwareElement ;
      s3kl:xsdCode "DO" .
s3kl:HardwareElementType_ElectricalPanel
      rdf:type owl:Class , s3kl:HardwareElementType ;
      rdfs:subClassOf s3kl:HardwareElement ;
      s3kl:xsdCode "EP" .
s3kl:HardwareElementType_Panel
      rdf:type owl:Class , s3kl:HardwareElementType ;
      rdfs:subClassOf s3kl:HardwareElement ;
      s3kl:xsdCode "PN" .
s3kl:HardwareElementType_Equipment
      rdf:type owl:Class , s3kl:HardwareElementType ;
      rdfs:subClassOf s3kl:HardwareElement ;
      s3kl:xsdCode "EQ" .

# hardwarePartConsumptionRate
s3kl:hardwarePartConsumptionRate
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:HardwarePartAsDesignedSupportData .

# hardwarePartElectromagneticIncompatible (Req)
s3kl:hardwarePartElectromagneticIncompatible
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:booleanProperty .

# hardwarePartElectromagneticSensitive (Req)
s3kl:hardwarePartElectromagneticSensitive
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:booleanProperty .

# hardwarePartElectrostaticSensitive (Req)
s3kl:hardwarePartElectrostaticSensitive
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:booleanProperty .

# hardwarePartEnvironmental and hardwarePartEnvironmentalCodeValues in XSD, but not in PDF ??

# --- page 19/ ---
# hardwarePartEnvironmentalAspectInUseClass (Req)
s3kl:HardwarePartEnvironmentalAspectInUseClass
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:DatedClassification , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:HardwarePartAsDesignedSupportData ] . 
s3kl:HardwarePartEnvironmentalAspectInUseClass_harmfulToEnvironment
      rdf:type owl:Class , s3kl:HardwarePartEnvironmentalAspectInUseClass ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "HARM" .
s3kl:HardwarePartEnvironmentalAspectInUseClass_acidification
      rdf:type owl:Class , s3kl:HardwarePartEnvironmentalAspectInUseClass ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "ACID" .
s3kl:HardwarePartEnvironmentalAspectInUseClass_dangerousForOzoneLayer
      rdf:type owl:Class , s3kl:HardwarePartEnvironmentalAspectInUseClass ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "OZON" .
s3kl:HardwarePartEnvironmentalAspectInUseClass_greenhouseEffect
      rdf:type owl:Class , s3kl:HardwarePartEnvironmentalAspectInUseClass ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "GREEN" .
s3kl:HardwarePartEnvironmentalAspectInUseClass_materialWaste
      rdf:type owl:Class , s3kl:HardwarePartEnvironmentalAspectInUseClass ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "WASTE" .
s3kl:HardwarePartEnvironmentalAspectInUseClass_energyRegainingByBurning
      rdf:type owl:Class , s3kl:HardwarePartEnvironmentalAspectInUseClass ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "BURN" .
s3kl:HardwarePartEnvironmentalAspectInUseClass_materialRecycling
      rdf:type owl:Class , s3kl:HardwarePartEnvironmentalAspectInUseClass ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "RECY" .

# hardwarePartEnvironmentalAspectPlannedDisposalClass (Req)
s3kl:HardwarePartEnvironmentalAspectPlannedDisposalClass
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:DatedClassification , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:HardwarePartAsDesignedSupportData ] . 
s3kl:HardwarePartEnvironmentalAspectPlannedDisposalClass_harmfulToEnvironment
      rdf:type owl:Class , s3kl:HardwarePartEnvironmentalAspectPlannedDisposalClass ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "HARM" .
s3kl:HardwarePartEnvironmentalAspectPlannedDisposalClass__acidification
      rdf:type owl:Class , s3kl:HardwarePartEnvironmentalAspectPlannedDisposalClass ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "ACID" .
s3kl:HardwarePartEnvironmentalAspectPlannedDisposalClass_dangerousForOzoneLayer
      rdf:type owl:Class , s3kl:HardwarePartEnvironmentalAspectPlannedDisposalClass ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "OZON" .
s3kl:HardwarePartEnvironmentalAspectPlannedDisposalClass_greenhouseEffect
      rdf:type owl:Class , s3kl:HardwarePartEnvironmentalAspectPlannedDisposalClass ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "GREEN" .
s3kl:HardwarePartEnvironmentalAspectPlannedDisposalClass_materialWaste
      rdf:type owl:Class , s3kl:HardwarePartEnvironmentalAspectPlannedDisposalClass ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "WASTE" .
s3kl:HardwarePartEnvironmentalAspectPlannedDisposalClass_energyRegainingByBurning
      rdf:type owl:Class , s3kl:HardwarePartEnvironmentalAspectPlannedDisposalClass ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "BURN" .
s3kl:HardwarePartEnvironmentalAspectPlannedDisposalClass_materialRecycling
      rdf:type owl:Class , s3kl:HardwarePartEnvironmentalAspectPlannedDisposalClass ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "RECY" .

# hardwarePartFitmentRequirement (Req)
s3kl:HardwarePartFitmentRequirement
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:HardwarePartAsDesignedSupportData ] . 
s3kl:HardwarePartFitmentRequirement_minorFittingRequirement
      rdf:type owl:Class , s3kl:HardwarePartFitmentRequirement ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "MINOR" .
s3kl:HardwarePartFitmentRequirement_majorFittingRequirement
      rdf:type owl:Class , s3kl:HardwarePartFitmentRequirement ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "MAJOR" .

# --- page 20/ ---
# hardwarePartHazardousClass (Req)
s3kl:HardwarePartHazardousClass
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:HardwarePartAsDesignedSupportData ] . 

# hardwarePartLogisticsCategory (Req)
s3kl:HardwarePartLogisticsCategory
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:HardwarePartAsDesignedSupportData ] . 
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:HardwarePartLogisticsCategory_Expendable s3kl:HardwarePartLogisticsCategory_Repairable s3kl:HardwarePartLogisticsCategory_Consumable s3kl:HardwarePartLogisticsCategory_Disposable s3kl:HardwarePartLogisticsCategory_Material s3kl:HardwarePartLogisticsCategory_Spare s3kl:HardwarePartLogisticsCategory_Supply s3kl:HardwarePartLogisticsCategory_SupportEquipment ) .
s3kl:HardwarePartLogisticsCategory_Consumable
      rdf:type owl:Class , s3kl:HardwarePartLogisticsCategory ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "C" .
s3kl:HardwarePartLogisticsCategory_Disposable
      rdf:type owl:Class , s3kl:HardwarePartLogisticsCategory ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "D" .
s3kl:HardwarePartLogisticsCategory_Expendable
      rdf:type owl:Class , s3kl:HardwarePartLogisticsCategory ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "E" .
s3kl:HardwarePartLogisticsCategory_Material
      rdf:type owl:Class , s3kl:HardwarePartLogisticsCategory ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "M" .
s3kl:HardwarePartLogisticsCategory_Repairable
      rdf:type owl:Class , s3kl:HardwarePartLogisticsCategory ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "R" .
s3kl:HardwarePartLogisticsCategory_SupportEquipment
      rdf:type owl:Class , s3kl:HardwarePartLogisticsCategory ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "SE" .
s3kl:HardwarePartLogisticsCategory_Spare
      rdf:type owl:Class , s3kl:HardwarePartLogisticsCategory ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "SP" .
s3kl:HardwarePartLogisticsCategory_Supply
      rdf:type owl:Class , s3kl:HardwarePartLogisticsCategory ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "SY" .

# hardwarePartMagneticSensitive (Req)
s3kl:hardwarePartMagneticSensitive
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:booleanProperty .

# --- page 21/ ---
# hardwarePartMaintenanceStart (Req)
s3kl:HardwarePartMaintenanceStart
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:HardwarePartAsDesignedSupportData ] . 
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:HardwarePartMaintenanceStart_AtProduction s3kl:HardwarePartMaintenanceStart_AtDelivery s3kl:HardwarePartMaintenanceStart_AtInstallationInAssembly s3kl:HardwarePartMaintenanceStart_AtInstallationInEndItem ) .
# - conistency error in XSD: maintenanceStartAtProduction, has 2 codes "START" and "PROD". Used only "PROD" for now.
s3kl:HardwarePartMaintenanceStart_AtProduction
      rdf:type owl:Class , s3kl:HardwarePartMaintenanceStart ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "PROD" .
s3kl:HardwarePartMaintenanceStart_AtDelivery
      rdf:type owl:Class , s3kl:HardwarePartMaintenanceStart ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "DELIV" .
s3kl:HardwarePartMaintenanceStart_AtInstallationInAssembly
      rdf:type owl:Class , s3kl:HardwarePartMaintenanceStart ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "ASSY" .
s3kl:HardwarePartMaintenanceStart_AtInstallationInEndItem
      rdf:type owl:Class , s3kl:HardwarePartMaintenanceStart ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "ENDITEM" .

# hardwarePartOperationalAuthorizedLife
s3kl:hardwarePartOperationalAuthorizedLife
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:HardwarePartAsDesignedDesignData ;
      rdfs:range s3kl:AuthorizedLife .

# hardwarePartRadiationSensitive (Req)
s3kl:hardwarePartRadiationSensitive
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:HardwarePartAsDesignedDesignData ;
      rdfs:subPropertyOf s3kl:booleanProperty .

# hardwarePartRepairability (Req)
s3kl:HardwarePartRepairability
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:HardwarePartAsDesignedSupportData ] . 
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:HardwarePartRepairability_Repairable s3kl:HardwarePartRepairability_PartiallyRepairable s3kl:HardwarePartRepairability_NonRepairable ) .
s3kl:HardwarePartRepairability_NonRepairable
      rdf:type owl:Class , s3kl:HardwarePartRepairability ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "N" .
s3kl:HardwarePartRepairability_PartiallyRepairable
      rdf:type owl:Class , s3kl:HardwarePartRepairability ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "P" .
s3kl:HardwarePartRepairability_Repairable
      rdf:type owl:Class , s3kl:HardwarePartRepairability ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "R" .

# hardwarePartRepairabilityStrategy (Req)
s3kl:HardwarePartRepairabilityStrategy
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:HardwarePartAsDesignedSupportData ] . 
s3kl:HardwarePartRepairabilityStrategy_nonRepairable
      rdf:type owl:Class , s3kl:HardwarePartRepairabilityStrategy ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "NREP" .
s3kl:HardwarePartRepairabilityStrategy_partialRepairable
      rdf:type owl:Class , s3kl:HardwarePartRepairabilityStrategy ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "PREP" .
s3kl:HardwarePartRepairabilityStrategy_repairable
      rdf:type owl:Class , s3kl:HardwarePartRepairabilityStrategy ;
      rdfs:subClassOf s3kl:HardwarePartAsDesignedSupportData ;
      s3kl:xsdCode "REP" .

# --- page 22/ ---
# hardwarePartScrapRate
s3kl:hardwarePartScrapRate
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:HardwarePartAsDesignedSupportData .

# hardwarePartWasteProductsInUseDisposalDescription (Req)
s3kl:hardwarePartWasteProductsInUseDisposalDescription
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:description ;
      rdfs:domain s3kl:HardwarePartAsDesignedSupportData .

# hardwarePartWasteProductsPlannedDisposalDescription (Req)
s3kl:hardwarePartWasteProductsPlannedDisposalDescription
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:description ;
      rdfs:domain s3kl:HardwarePartAsDesignedSupportData .

# informationCode (Req)
s3kl:InformationCode
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:TaskRevision_or_SubtaskByDefinition ] . 
s3kl:TaskRevision_or_SubtaskByDefinition
      rdf:type owl:Class ;
      owl:unionOf ( s3kl:TaskRevision s3kl:SubtaskByDefinition ) .
s3kl:InformationCode_preOperationTask
      rdf:type owl:Class , s3kl:InformationCode ;
      rdfs:subClassOf s3kl:TaskRevision_or_SubtaskByDefinition ;
      s3kl:xsdCode "120" .
s3kl:InformationCode_postOperationTask
      rdf:type owl:Class , s3kl:InformationCode ;
      rdfs:subClassOf s3kl:TaskRevision_or_SubtaskByDefinition ;
      s3kl:xsdCode "150" .
s3kl:InformationCode_fillTask
      rdf:type owl:Class , s3kl:InformationCode ;
      rdfs:subClassOf s3kl:TaskRevision_or_SubtaskByDefinition ;
      s3kl:xsdCode "210" .
s3kl:InformationCode_drainLiquidAdReleasePressureTask
      rdf:type owl:Class , s3kl:InformationCode ;
      rdfs:subClassOf s3kl:TaskRevision_or_SubtaskByDefinition ;
      s3kl:xsdCode "220" .
s3kl:InformationCode_bleedAndPrimeTask
      rdf:type owl:Class , s3kl:InformationCode ;
      rdfs:subClassOf s3kl:TaskRevision_or_SubtaskByDefinition ;
      s3kl:xsdCode "230" .
s3kl:InformationCode_lubricationTask
      rdf:type owl:Class , s3kl:InformationCode ;
      rdfs:subClassOf s3kl:TaskRevision_or_SubtaskByDefinition ;
      s3kl:xsdCode "240" .
s3kl:InformationCode_cleanAndApplySurfaceProtectionTask
      rdf:type owl:Class , s3kl:InformationCode ;
      rdfs:subClassOf s3kl:TaskRevision_or_SubtaskByDefinition ;
      s3kl:xsdCode "250" .
s3kl:InformationCode_removeAndPreventIceOrRemoveContaminationTask
      rdf:type owl:Class , s3kl:InformationCode ;
      rdfs:subClassOf s3kl:TaskRevision_or_SubtaskByDefinition ;
      s3kl:xsdCode "260" .
s3kl:InformationCode_adjustAlignOrCalibrateTask
      rdf:type owl:Class , s3kl:InformationCode ;
      rdfs:subClassOf s3kl:TaskRevision_or_SubtaskByDefinition ;
      s3kl:xsdCode "270" .
s3kl:InformationCode_inspectionTask
      rdf:type owl:Class , s3kl:InformationCode ;
      rdfs:subClassOf s3kl:TaskRevision_or_SubtaskByDefinition ;
      s3kl:xsdCode "280" .
s3kl:InformationCode_visualExaminationTask
      rdf:type owl:Class , s3kl:InformationCode ;
      rdfs:subClassOf s3kl:TaskRevision_or_SubtaskByDefinition ;
      s3kl:xsdCode "310" .
s3kl:InformationCode_operationTestTask
      rdf:type owl:Class , s3kl:InformationCode ;
      rdfs:subClassOf s3kl:TaskRevision_or_SubtaskByDefinition ;
      s3kl:xsdCode "320" .
s3kl:InformationCode_functionTestTask
      rdf:type owl:Class , s3kl:InformationCode ;
      rdfs:subClassOf s3kl:TaskRevision_or_SubtaskByDefinition ;
      s3kl:xsdCode "340" .
# - error in XSD, 2 * "360"
s3kl:InformationCode_designDataOrTolerancesCheckTask
      rdf:type owl:Class , s3kl:InformationCode ;
      rdfs:subClassOf s3kl:TaskRevision_or_SubtaskByDefinition ;
      s3kl:xsdCode "360" .
s3kl:InformationCode_monitorConditionTask
      rdf:type owl:Class , s3kl:InformationCode ;
      rdfs:subClassOf s3kl:TaskRevision_or_SubtaskByDefinition ;
      s3kl:xsdCode "360" .
s3kl:InformationCode_removeTask
      rdf:type owl:Class , s3kl:InformationCode ;
      rdfs:subClassOf s3kl:TaskRevision_or_SubtaskByDefinition ;
      s3kl:xsdCode "520" .
s3kl:InformationCode_ammunitionUnloadingTask
      rdf:type owl:Class , s3kl:InformationCode ;
      rdfs:subClassOf s3kl:TaskRevision_or_SubtaskByDefinition ;
      s3kl:xsdCode "525" .
s3kl:InformationCode_repairOrLocallyMakeTask
      rdf:type owl:Class , s3kl:InformationCode ;
      rdfs:subClassOf s3kl:TaskRevision_or_SubtaskByDefinition ;
      s3kl:xsdCode "600" .
s3kl:InformationCode_installTask
      rdf:type owl:Class , s3kl:InformationCode ;
      rdfs:subClassOf s3kl:TaskRevision_or_SubtaskByDefinition ;
      s3kl:xsdCode "720" .
s3kl:InformationCode_ammunitionLoadingTask
      rdf:type owl:Class , s3kl:InformationCode ;
      rdfs:subClassOf s3kl:TaskRevision_or_SubtaskByDefinition ;
      s3kl:xsdCode "725" .
s3kl:InformationCode_softwareLoadingTask
      rdf:type owl:Class , s3kl:InformationCode ;
      rdfs:subClassOf s3kl:TaskRevision_or_SubtaskByDefinition ;
      s3kl:xsdCode "750" .
s3kl:InformationCode_preservationTask
      rdf:type owl:Class , s3kl:InformationCode ;
      rdfs:subClassOf s3kl:TaskRevision_or_SubtaskByDefinition ;
      s3kl:xsdCode "810" .
s3kl:InformationCode_removePreservationMaterialTask
      rdf:type owl:Class , s3kl:InformationCode ;
      rdfs:subClassOf s3kl:TaskRevision_or_SubtaskByDefinition ;
      s3kl:xsdCode "820" .
s3kl:InformationCode_putItemInContainerTask
      rdf:type owl:Class , s3kl:InformationCode ;
      rdfs:subClassOf s3kl:TaskRevision_or_SubtaskByDefinition ;
      s3kl:xsdCode "830" .
s3kl:InformationCode_removeItemFromContainerTask
      rdf:type owl:Class , s3kl:InformationCode ;
      rdfs:subClassOf s3kl:TaskRevision_or_SubtaskByDefinition ;
      s3kl:xsdCode "840" .
s3kl:InformationCode_keepItemServiceableInStorageTask
      rdf:type owl:Class , s3kl:InformationCode ;
      rdfs:subClassOf s3kl:TaskRevision_or_SubtaskByDefinition ;
      s3kl:xsdCode "850" .
s3kl:InformationCode_moveItemInStorageTask
      rdf:type owl:Class , s3kl:InformationCode ;
      rdfs:subClassOf s3kl:TaskRevision_or_SubtaskByDefinition ;
      s3kl:xsdCode "860" .
s3kl:InformationCode_prepareItemAfterStorageTask
      rdf:type owl:Class , s3kl:InformationCode ;
      rdfs:subClassOf s3kl:TaskRevision_or_SubtaskByDefinition ;
      s3kl:xsdCode "870" .
s3kl:InformationCode_removeAndInstallTask
      rdf:type owl:Class , s3kl:InformationCode ;
      rdfs:subClassOf s3kl:TaskRevision_or_SubtaskByDefinition ;
      s3kl:xsdCode "920" .
s3kl:InformationCode_neutralizationAndDisposalTask
      rdf:type owl:Class , s3kl:InformationCode ;
      rdfs:subClassOf s3kl:TaskRevision_or_SubtaskByDefinition ;
      s3kl:xsdCode "990" .

# keyPerformanceIndicatorMethod
# - use generic s3kl:description

# keyPerformanceIndicatorPercentile
s3kl:keyPerformanceIndicatorPercentile
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:KeyPerformanceIndicator .

# --- page 23/ ---
# keyPerformanceIndicatorStatus (Req)
s3kl:KeyPerformanceIndicatorStatus
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:KeyPerformanceIndicator ] . 
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:KeyPerformanceIndicatorStatus_preliminaryStatus s3kl:KeyPerformanceIndicatorStatus_acceptedStatus s3kl:KeyPerformanceIndicatorStatus_releasedStatus ) .
s3kl:KeyPerformanceIndicatorStatus_preliminaryStatus
      rdf:type owl:Class , s3kl:KeyPerformanceIndicatorStatus ;
      rdfs:subClassOf s3kl:KeyPerformanceIndicator ;
      s3kl:xsdCode "PREL" .
s3kl:KeyPerformanceIndicatorStatus_acceptedStatus
      rdf:type owl:Class , s3kl:KeyPerformanceIndicatorStatus ;
      rdfs:subClassOf s3kl:KeyPerformanceIndicator ;
      s3kl:xsdCode "ACCEPT" .
s3kl:KeyPerformanceIndicatorStatus_releasedStatus
      rdf:type owl:Class , s3kl:KeyPerformanceIndicatorStatus ;
      rdfs:subClassOf s3kl:KeyPerformanceIndicator ;
      s3kl:xsdCode "REL" .

# lifeCycleCost
s3kl:lifeCycleCost
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:LifeCycleCost .

# LSACandidateIndicator (Req)
s3kl:LSACandidateIndicator
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:LSACandidate ] .
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:LSACandidateIndicator_Full s3kl:LSACandidateIndicator_Partial s3kl:LSACandidateIndicator_Non s3kl:LSACandidateIndicator_Open ) .
s3kl:LSACandidateIndicator_Full   # for fullCandidate
      rdf:type owl:Class , s3kl:LSACandidateIndicator ;
      rdfs:subClassOf s3kl:LSACandidate ;
      s3kl:xsdCode "F" .
s3kl:LSACandidateIndicator_Partial   # for partialCandidate
      rdf:type owl:Class , s3kl:LSACandidateIndicator ;
      rdfs:subClassOf s3kl:LSACandidate ;
      s3kl:xsdCode "P" .
s3kl:LSACandidateIndicator_Non   # for nonCandidate
      rdf:type owl:Class , s3kl:LSACandidateIndicator ;
      rdfs:subClassOf s3kl:LSACandidate ;
      s3kl:xsdCode "N" .
s3kl:LSACandidateIndicator_Open   # for open
      rdf:type owl:Class , s3kl:LSACandidateIndicator ;
      rdfs:subClassOf s3kl:LSACandidate ;
      s3kl:xsdCode "O" .

# LSACandidateMaintenanceConcept
s3kl:lsaCandidateMaintenanceConcept
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:description ;
      rdfs:domain s3kl:LSACandidate .

# --- page 24/ ---
# LSACandidateMaintenanceSolution (Req)
s3kl:lsaCandidateMaintenanceSolution
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:description ;
      rdfs:domain s3kl:LSACandidate .

# LSACandidateRationale
s3kl:lsaCandidateRationale
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:description ;
      rdfs:domain s3kl:LSACandidate .

# LSAFailureModeDistributionRating
s3kl:LSAFailureModeDistributionRating
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:LSAFailureModeWithDistributionRating ] .
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:LSAFailureModeDistributionRating_moderatelyHighLikelihood s3kl:LSAFailureModeDistributionRating_mediumLikelihood s3kl:LSAFailureModeDistributionRating_moderatelyLowLikelihood s3kl:LSAFailureModeDistributionRating_lowLikelihood s3kl:LSAFailureModeDistributionRating_veryLowLikelihood ) .
s3kl:LSAFailureModeDistributionRating_moderatelyHighLikelihood
      rdf:type owl:Class , s3kl:LSAFailureModeDistributionRating ;
      rdfs:subClassOf s3kl:LSAFailureModeWithDistributionRating ;
      s3kl:xsdCode "MHIGH" .
s3kl:LSAFailureModeDistributionRating_mediumLikelihood
      rdf:type owl:Class , s3kl:LSAFailureModeDistributionRating ;
      rdfs:subClassOf s3kl:LSAFailureModeWithDistributionRating ;
      s3kl:xsdCode "MED" .
s3kl:LSAFailureModeDistributionRating_moderatelyLowLikelihood
      rdf:type owl:Class , s3kl:LSAFailureModeDistributionRating ;
      rdfs:subClassOf s3kl:LSAFailureModeWithDistributionRating ;
      s3kl:xsdCode "MLOW" .
s3kl:LSAFailureModeDistributionRating_lowLikelihood
      rdf:type owl:Class , s3kl:LSAFailureModeDistributionRating ;
      rdfs:subClassOf s3kl:LSAFailureModeWithDistributionRating ;
      s3kl:xsdCode "LOW" .
s3kl:LSAFailureModeDistributionRating_veryLowLikelihood
      rdf:type owl:Class , s3kl:LSAFailureModeDistributionRating ;
      rdfs:subClassOf s3kl:LSAFailureModeWithDistributionRating ;
      s3kl:xsdCode "VLOW" .

# LSAFailureModeDistributionRatio
s3kl:lsaFailureModeDistributionRatio
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:LSAFailureModeWithDistributionRatio .

# maintenanceFreeOperatingPeriod
s3kl:maintenanceFreeOperatingPeriod
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:MaintenanceFreeOperatingPeriod .

# maintenanceLevelCapabilityDescription
# - use generic s3kl:description

# --- page 25/591 ---
# maintenanceLevelIdentifier (Req)
s3kl:maintenanceLevelIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:domain s3kl:MaintenanceLevel .
s3kl:MaintenanceLevelIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:maintenanceLevelIdentifier ] .
s3kl:MaintenanceLevelIdentifier_MLID
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:MaintenanceLevelIdentifier ;
      s3kl:xsdCode "MLID" .
s3kl:maintenanceLevelIdentifier_MLID
      rdf:type owl:DatatypeProperty , s3kl:MaintenanceLevelIdentifier_MLID ;
      rdfs:subPropertyOf s3kl:maintenanceLevelIdentifier .

# maintenanceLevelName (Req)
# - use generic s3kl:name

# maintenanceLocationDescription
# - use generic s3kl:description

# maintenanceLocationIdentifier
s3kl:maintenanceLocationIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:domain s3kl:MaintenanceLevel .
s3kl:MaintenanceLocationIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:maintenanceLocationIdentifier ] .
s3kl:MaintenanceLocationIdentifier_MLID
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:MaintenanceLocationIdentifier ;
      s3kl:xsdCode "MLID" .
s3kl:maintenanceLocationIdentifier_MLID
      rdf:type owl:DatatypeProperty , s3kl:MaintenanceLocationIdentifier_MLID ;
      rdfs:subPropertyOf s3kl:maintenanceLocationIdentifier .

# maintenanceLocationName
# - use generic s3kl:name

# maintenanceManHoursPerOperatingHour (Req)
s3kl:maintenanceManHoursPerOperatingHour
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:MaintenanceManHoursPerOperatingHour .

# --- page 26/ ---
# maintenanceSignificantOrRelevant (Req) (named maintenanceSignificantOrRelevantIndicator in chapter 22)
s3kl:MaintenanceSignificantOrRelevant
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:BreakdownElementRevision ] .
s3kl:MaintenanceSignificantOrRelevant_maintenanceRelevant
      rdf:type owl:Class , s3kl:MaintenanceSignificantOrRelevant ;
      rdfs:subClassOf s3kl:BreakdownElementRevision ;
      s3kl:xsdCode "MR" .
s3kl:MaintenanceSignificantOrRelevant_maintenanceSignificant
      rdf:type owl:Class , s3kl:MaintenanceSignificantOrRelevant ;
      rdfs:subClassOf s3kl:BreakdownElementRevision ;
      s3kl:xsdCode "MS" .
s3kl:MaintenanceSignificantOrRelevant_notApplicable
      rdf:type owl:Class , s3kl:MaintenanceSignificantOrRelevant ;
      rdfs:subClassOf s3kl:BreakdownElementRevision ;
      s3kl:xsdCode "NA" .
s3kl:MaintenanceSignificantOrRelevant_nonMaintenanceSignificantOrRelevant
      rdf:type owl:Class , s3kl:MaintenanceSignificantOrRelevant ;
      rdfs:subClassOf s3kl:BreakdownElementRevision ;
      s3kl:xsdCode "NM" .

# meanTimeBetweenFailure (Req)
s3kl:meanTimeBetweenFailure
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:MeanTimeBetweenFailure .

# meanTimeBetweenUnscheduledRemoval
s3kl:meanTimeBetweenUnscheduledRemoval
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:MeanTimeBetweenUnscheduledRemoval .

# meanTimeToRepair
s3kl:meanTimeToRepair
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:MeanTimeToRepair .

# --- page 27/ ---
# nonConformanceDescription
# - use generic s3kl:description

# nonConformanceRestriction
s3kl:nonConformanceRestriction
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:description ;
      rdfs:domain s3kl:NonConformanceData .

# nonConformanceType
s3kl:NonConformanceType
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:NonConformanceData ] . 
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:NonConformanceType_Concession s3kl:NonConformanceType_Waiver ) .
s3kl:NonConformanceType_Concession
      rdf:type owl:Class , s3kl:NonConformanceType ;
      rdfs:subClassOf s3kl:NonConformanceData ;
      s3kl:xsdCode "C" .
s3kl:NonConformanceType_Waiver
      rdf:type owl:Class , s3kl:NonConformanceType ;
      rdfs:subClassOf s3kl:NonConformanceData ;
      s3kl:xsdCode "W" .

# numberOfOperatingLocations
s3kl:numberOfOperatingLocations
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:OperatingLocationType .

# operatingLocationDescription
# - use generic s3kl:description

# operatingLocationIdentifier
s3kl:operatingLocationIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:domain s3kl:OperatingLocation .
s3kl:OperatingLocationIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:operatingLocationIdentifier ] .
s3kl:OperatingLocationIdentifier_OPLOCID
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:OperatingLocationIdentifier ;
      s3kl:xsdCode "OPLOCID" .
s3kl:operatingLocationIdentifier_OPLOCID
      rdf:type owl:DatatypeProperty , s3kl:OperatingLocationIdentifier_OPLOCID ;
      rdfs:subPropertyOf s3kl:operatingLocationIdentifier .

# operatingLocationName
# - use generic s3kl:name

# operatingLocationTypeDescription
# - use generic s3kl:description

# --- page 28/ ---
# operatingLocationTypeIdentifier (Req)
s3kl:operatingLocationTypeIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:domain s3kl:OperatingLocationType .
s3kl:OperatingLocationTypeIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:operatingLocationTypeIdentifier ] .
s3kl:OperatingLocationTypeIdentifier_OLTID
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:OperatingLocationTypeIdentifier ;
      s3kl:xsdCode "OLTID" .
s3kl:operatingLocationTypeIdentifier_OLTID
      rdf:type owl:DatatypeProperty , s3kl:OperatingLocationTypeIdentifier_OLTID ;
      rdfs:subPropertyOf s3kl:operatingLocationTypeIdentifier .

# operatingLocationTypeName (Req)
# - use generic s3kl:name

# operatingRequirementAtOperatingLocation
s3kl:operatingRequirementAtOperatingLocation
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:ContractedProductVariantAtOperatingLocation .

# operatingRequirementAtOperatingLocationType (Req)
s3kl:operatingRequirementAtOperatingLocationType
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:ContractedProductVariantAtOperatingLocationType .

# organizationAssignmentRole (Req)
# - taken as a class of ObjectProperty that are subPropertyOf of s3kl:organizationAssignment
s3kl:OrganizationAssignmentRole
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:OrganizationAssignment ] . 

s3kl:OrganizationAssignmentRole_authorizingOrganization
      rdf:type owl:Class , s3kl:OrganizationAssignmentRole ;
      rdfs:subClassOf s3kl:OrganizationAssignment ;
      s3kl:xsdCode "AUTH" .
s3kl:organizationAssignment_authorizingOrganization
      rdf:type owl:ObjectProperty , s3kl:OrganizationAssignmentRole_authorizingOrganization ;
      rdfs:subPropertyOf s3kl:organizationAssignment .

s3kl:OrganizationAssignmentRole_designResponsibleOrganization
      rdf:type owl:Class , s3kl:OrganizationAssignmentRole ;
      rdfs:subClassOf s3kl:OrganizationAssignment ;
      s3kl:xsdCode "DESG" .
s3kl:organizationAssignment_designResponsibleOrganization
      rdf:type owl:ObjectProperty , s3kl:OrganizationAssignmentRole_designResponsibleOrganization ;
      rdfs:subPropertyOf s3kl:organizationAssignment .

s3kl:OrganizationAssignmentRole_publisherOrganization
      rdf:type owl:Class , s3kl:OrganizationAssignmentRole ;
      rdfs:subClassOf s3kl:OrganizationAssignment ;
      s3kl:xsdCode "PUBL" .
s3kl:organizationAssignment_publisherOrganization
      rdf:type owl:ObjectProperty , s3kl:OrganizationAssignmentRole_publisherOrganization ;
      rdfs:subPropertyOf s3kl:organizationAssignment .

# --- page 29/ ---
# organizationIdentifier (Req)
s3kl:organizationIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:domain s3kl:Organization .
s3kl:OrganizationIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:organizationIdentifier ] .
s3kl:OrganizationIdentifier_CAGE
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:OrganizationIdentifier ;
      s3kl:xsdCode "CAGE" .
s3kl:organizationIdentifier_CAGE
      rdf:type owl:DatatypeProperty , s3kl:OrganizationIdentifier_CAGE ;
      rdfs:subPropertyOf s3kl:organizationIdentifier .

# organizationName (Req)
# - use generic s3kl:name

# packagedTask (Req)
s3kl:packagedTask
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:booleanProperty .

# partDemilitarizationClass (Req)
s3kl:PartDemilitarizationClass
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:DatedClassification , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:PartAsDesignedControlledItemData ] . 
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:PartDemilitarizationClass_demilitarizationNotRequired s3kl:PartDemilitarizationClass_tradeSecurityControlsRequiredAtDisposal s3kl:PartDemilitarizationClass_keyPointsDemilitarization s3kl:PartDemilitarizationClass_mutilationDemilitarization s3kl:PartDemilitarizationClass_nationalDemilitarization s3kl:PartDemilitarizationClass_demilitarizationToBeFurnished s3kl:PartDemilitarizationClass_demilitarizationPriorToTransfer s3kl:PartDemilitarizationClass_securityClassifiedItem ) .
s3kl:PartDemilitarizationClass_demilitarizationNotRequired
      rdf:type owl:Class , s3kl:PartDemilitarizationClass ;
      rdfs:subClassOf s3kl:PartAsDesignedControlledItemData ;
      s3kl:xsdCode "N/A" .
s3kl:PartDemilitarizationClass_tradeSecurityControlsRequiredAtDisposal
      rdf:type owl:Class , s3kl:PartDemilitarizationClass ;
      rdfs:subClassOf s3kl:PartAsDesignedControlledItemData ;
      s3kl:xsdCode "TSC" .
s3kl:PartDemilitarizationClass_keyPointsDemilitarization
      rdf:type owl:Class , s3kl:PartDemilitarizationClass ;
      rdfs:subClassOf s3kl:PartAsDesignedControlledItemData ;
      s3kl:xsdCode "KEY" .
s3kl:PartDemilitarizationClass_mutilationDemilitarization
      rdf:type owl:Class , s3kl:PartDemilitarizationClass ;
      rdfs:subClassOf s3kl:PartAsDesignedControlledItemData ;
      s3kl:xsdCode "MUT" .
s3kl:PartDemilitarizationClass_nationalDemilitarization
      rdf:type owl:Class , s3kl:PartDemilitarizationClass ;
      rdfs:subClassOf s3kl:PartAsDesignedControlledItemData ;
      s3kl:xsdCode "NAT" .
s3kl:PartDemilitarizationClass_demilitarizationToBeFurnished
      rdf:type owl:Class , s3kl:PartDemilitarizationClass ;
      rdfs:subClassOf s3kl:PartAsDesignedControlledItemData ;
      s3kl:xsdCode "TBD" .
s3kl:PartDemilitarizationClass_demilitarizationPriorToTransfer
      rdf:type owl:Class , s3kl:PartDemilitarizationClass ;
      rdfs:subClassOf s3kl:PartAsDesignedControlledItemData ;
      s3kl:xsdCode "PRI" .
s3kl:PartDemilitarizationClass_securityClassifiedItem
      rdf:type owl:Class , s3kl:PartDemilitarizationClass ;
      rdfs:subClassOf s3kl:PartAsDesignedControlledItemData ;
      s3kl:xsdCode "SEC" .

# --- page 30/ ---
# partIdentifier (Req)
s3kl:partIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:domain s3kl:PartAsDesigned .
s3kl:PartIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:partIdentifier ] .
s3kl:PartIdentifier_customerPartNumber
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:PartIdentifier ;
      s3kl:xsdCode "CPNO" .
s3kl:partIdentifier_customerPartNumber
      rdf:type owl:DatatypeProperty , s3kl:PartIdentifier_customerPartNumber ;
      rdfs:subPropertyOf s3kl:partIdentifier .
s3kl:PartIdentifier_oemPartNumber
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:PartIdentifier ;
      s3kl:xsdCode "OEM" .
s3kl:partIdentifier_oemPartNumber
      rdf:type owl:DatatypeProperty , s3kl:PartIdentifier_oemPartNumber ;
      rdfs:subPropertyOf s3kl:partIdentifier .
s3kl:PartIdentifier_partNumber
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:PartIdentifier ;
      s3kl:xsdCode "PNO" .
s3kl:partIdentifier_partNumber
      rdf:type owl:DatatypeProperty , s3kl:PartIdentifier_partNumber ;
      rdfs:subPropertyOf s3kl:partIdentifier .
s3kl:PartIdentifier_supplierPartNumber
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:PartIdentifier ;
      s3kl:xsdCode "SPNO" .
s3kl:partIdentifier_supplierPartNumber
      rdf:type owl:DatatypeProperty , s3kl:PartIdentifier_supplierPartNumber ;
      rdfs:subPropertyOf s3kl:partIdentifier .
s3kl:PartIdentifier_referencePartNumber
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:PartIdentifier ;
      s3kl:xsdCode "REF" .
s3kl:partIdentifier_referencePartNumber
      rdf:type owl:DatatypeProperty , s3kl:PartIdentifier_referencePartNumber ;
      rdfs:subPropertyOf s3kl:partIdentifier .
s3kl:PartIdentifier_natoStockNumber
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:PartIdentifier ;
      s3kl:xsdCode "NSN" .
s3kl:partIdentifier_natoStockNumber
      rdf:type owl:DatatypeProperty , s3kl:PartIdentifier_natoStockNumber ;
      rdfs:subPropertyOf s3kl:partIdentifier .
s3kl:PartIdentifier_standardsReferenceDesignator
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:PartIdentifier ;
      s3kl:xsdCode "STD" .
s3kl:partIdentifier_standardsReferenceDesignator
      rdf:type owl:DatatypeProperty , s3kl:PartIdentifier_standardsReferenceDesignator ;
      rdfs:subPropertyOf s3kl:partIdentifier .

# partMaturityClass
s3kl:PartMaturityClass
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:DatedClassification , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:PartAsDesignedSupportData ] . 
s3kl:PartMaturityClass_newDeveloped
      rdf:type owl:Class , s3kl:PartMaturityClass ;
      rdfs:subClassOf s3kl:PartAsDesignedSupportData ;
      s3kl:xsdCode "NEW" .
s3kl:PartMaturityClass_majorModificationOfExistingItem
      rdf:type owl:Class , s3kl:PartMaturityClass ;
      rdfs:subClassOf s3kl:PartAsDesignedSupportData ;
      s3kl:xsdCode "MOD-L" .
s3kl:PartMaturityClass_moderateModificationOfExistingItem
      rdf:type owl:Class , s3kl:PartMaturityClass ;
      rdfs:subClassOf s3kl:PartAsDesignedSupportData ;
      s3kl:xsdCode "MOD-M" .
s3kl:PartMaturityClass_cotsItem
      rdf:type owl:Class , s3kl:PartMaturityClass ;
      rdfs:subClassOf s3kl:PartAsDesignedSupportData ;
      s3kl:xsdCode "COTS" .
s3kl:PartMaturityClass_customerItem
      rdf:type owl:Class , s3kl:PartMaturityClass ;
      rdfs:subClassOf s3kl:PartAsDesignedSupportData ;
      s3kl:xsdCode "CFE" .
s3kl:PartMaturityClass_obsoleteItem
      rdf:type owl:Class , s3kl:PartMaturityClass ;
      rdfs:subClassOf s3kl:PartAsDesignedSupportData ;
      s3kl:xsdCode "OBS" .

# partName (Req)
# - use generic s3kl:name

# partObsolescenceRiskAssessment
s3kl:partObsolescenceRiskAssessment
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:description ;
      rdfs:domain s3kl:PartAsDesignedSupportData .

# partsListEntryIdentifier (Req)
s3kl:partsListEntryIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:domain s3kl:PartAsDesignedPartsListEntry .
s3kl:PartsListEntryIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:partsListEntryIdentifier ] .
s3kl:PartsListEntryIdentifier_lineNumber
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:PartsListEntryIdentifier ;
      s3kl:xsdCode "LN" .
s3kl:partsListEntryIdentifier_lineNumber
      rdf:type owl:DatatypeProperty , s3kl:PartsListEntryIdentifier_lineNumber ;
      rdfs:subPropertyOf s3kl:partsListEntryIdentifier .
s3kl:PartsListEntryIdentifier_partsListEntryPosition
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:PartsListEntryIdentifier ;
      s3kl:xsdCode "POS" .
s3kl:partsListEntryIdentifier_partsListEntryPosition
      rdf:type owl:DatatypeProperty , s3kl:PartsListEntryIdentifier_partsListEntryPosition ;
      rdfs:subPropertyOf s3kl:partsListEntryIdentifier .

# partsListRevisionIdentifier (Req)
s3kl:partsListRevisionIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:vid ;
      rdfs:domain s3kl:PartAsDesignedPartsList .
s3kl:PartsListRevisionIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:partsListRevisionIdentifier ] .
s3kl:PartsListRevisionIdentifier_revisionIdentification
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:PartsListRevisionIdentifier ;
      s3kl:xsdCode "REV" .
s3kl:partsListRevisionIdentifier_revisionIdentification
      rdf:type owl:DatatypeProperty , s3kl:PartsListRevisionIdentifier_revisionIdentification ;
      rdfs:subPropertyOf s3kl:partsListRevisionIdentifier .
s3kl:PartsListRevisionIdentifier_issueNumber
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:PartsListRevisionIdentifier ;
      s3kl:xsdCode "ISS" .
s3kl:partsListRevisionIdentifier_issueNumber
      rdf:type owl:DatatypeProperty , s3kl:PartsListRevisionIdentifier_issueNumber ;
      rdfs:subPropertyOf s3kl:partsListRevisionIdentifier .

# --- page 31/ ---
# partsListType (Req)
s3kl:PartsListType
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:PartAsDesignedPartsList ] . 
s3kl:PartsListType_engineeringPartsList
      rdf:type owl:Class , s3kl:PartsListType ;
      rdfs:subClassOf s3kl:PartAsDesignedPartsList ;
      s3kl:xsdCode "EBOM" .
s3kl:PartsListType_manufacturingPartsList
      rdf:type owl:Class , s3kl:PartsListType ;
      rdfs:subClassOf s3kl:PartAsDesignedPartsList ;
      s3kl:xsdCode "MBOM" .
s3kl:PartsListType_supportPartsList
      rdf:type owl:Class , s3kl:PartsListType ;
      rdfs:subClassOf s3kl:PartAsDesignedPartsList ;
      s3kl:xsdCode "SBOM" .
s3kl:PartsListType_provisioningPartsList
      rdf:type owl:Class , s3kl:PartsListType ;
      rdfs:subClassOf s3kl:PartAsDesignedPartsList ;
      s3kl:xsdCode "PBOM" .

# partSpecialHandlingRequirement (Req)
s3kl:partSpecialHandlingRequirement
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:description ;
      rdfs:domain s3kl:PartAsDesignedDesignData .

# physicalReplaceability (Req)
s3kl:PhysicalReplaceability
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:PartAsDesignedPartsListEntry ] . 
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:PhysicalReplaceability_nonReplaceable s3kl:PhysicalReplaceability_replaceable s3kl:PhysicalReplaceability_notApplicable ) .
s3kl:PhysicalReplaceability_nonReplaceable
      rdf:type owl:Class , s3kl:PhysicalReplaceability ;
      rdfs:subClassOf s3kl:PartAsDesignedPartsListEntry ;
      s3kl:xsdCode "N" .
s3kl:PhysicalReplaceability_replaceable
      rdf:type owl:Class , s3kl:PhysicalReplaceability ;
      rdfs:subClassOf s3kl:PartAsDesignedPartsListEntry ;
      s3kl:xsdCode "R" .
s3kl:PhysicalReplaceability_notApplicable
      rdf:type owl:Class , s3kl:PhysicalReplaceability ;
      rdfs:subClassOf s3kl:PartAsDesignedPartsListEntry ;
      s3kl:xsdCode "NA" .

# physicalReplaceabilityStrategy (Req)
s3kl:PhysicalReplaceabilityStrategy
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:PartAsDesignedPartsListEntry ] . 
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:PhysicalReplaceabilityStrategy_lineReplaceable s3kl:PhysicalReplaceabilityStrategy_shopReplaceable s3kl:PhysicalReplaceabilityStrategy_notApplicable ) .
s3kl:PhysicalReplaceabilityStrategy_lineReplaceable
      rdf:type owl:Class , s3kl:PhysicalReplaceabilityStrategy ;
      rdfs:subClassOf s3kl:PartAsDesignedPartsListEntry ;
      s3kl:xsdCode "LRU" .
s3kl:PhysicalReplaceabilityStrategy_shopReplaceable
      rdf:type owl:Class , s3kl:PhysicalReplaceabilityStrategy ;
      rdfs:subClassOf s3kl:PartAsDesignedPartsListEntry ;
      s3kl:xsdCode "SRU" .
s3kl:PhysicalReplaceabilityStrategy_notApplicable
      rdf:type owl:Class , s3kl:PhysicalReplaceabilityStrategy ;
      rdfs:subClassOf s3kl:PartAsDesignedPartsListEntry ;
      s3kl:xsdCode "NA" .

# --- page 32/ ---
# productIdentifier (Req)
s3kl:productIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:domain s3kl:Product .
s3kl:ProductIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:productIdentifier ] .
s3kl:ProductIdentifier_endItemAcronymCode
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ProductIdentifier ;
      s3kl:xsdCode "EIAC" .
s3kl:productIdentifier_endItemAcronymCode
      rdf:type owl:DatatypeProperty , s3kl:ProductIdentifier_endItemAcronymCode ;
      rdfs:subPropertyOf s3kl:productIdentifier .
s3kl:ProductIdentifier_modelIdentificationCode
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ProductIdentifier ;
      s3kl:xsdCode "MOI" .
s3kl:productIdentifier_modelIdentificationCode
      rdf:type owl:DatatypeProperty , s3kl:ProductIdentifier_modelIdentificationCode ;
      rdfs:subPropertyOf s3kl:productIdentifier .
s3kl:ProductIdentifier_productIdentificationCode
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ProductIdentifier ;
      s3kl:xsdCode "PID" .
s3kl:productIdentifier_productIdentificationCode
      rdf:type owl:DatatypeProperty , s3kl:ProductIdentifier_productIdentificationCode ;
      rdfs:subPropertyOf s3kl:productIdentifier .

# productName (Req)
# - use generic s3kl:name

# productServiceLife
s3kl:productServiceLife
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:ProductServiceLife .

# productUsagePhase
s3kl:ProductUsagePhaseType
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:ProductUsagePhase ] . 
s3kl:ProductUsagePhase_operation
      rdf:type owl:Class , s3kl:ProductUsagePhaseType ;
      rdfs:subClassOf s3kl:ProductUsagePhase ;
      s3kl:xsdCode "OPER" .
s3kl:ProductUsagePhase_takeOff
      rdf:type owl:Class , s3kl:ProductUsagePhaseType ;
      rdfs:subClassOf s3kl:ProductUsagePhase ;
      s3kl:xsdCode "TOFF" .
s3kl:ProductUsagePhase_flight
      rdf:type owl:Class , s3kl:ProductUsagePhaseType ;
      rdfs:subClassOf s3kl:ProductUsagePhase ;
      s3kl:xsdCode "FLIGHT" .
s3kl:ProductUsagePhase_maintenance
      rdf:type owl:Class , s3kl:ProductUsagePhaseType ;
      rdfs:subClassOf s3kl:ProductUsagePhase ;
      s3kl:xsdCode "MAINT" .
s3kl:ProductUsagePhase_storage
      rdf:type owl:Class , s3kl:ProductUsagePhaseType ;
      rdfs:subClassOf s3kl:ProductUsagePhase ;
      s3kl:xsdCode "STOR" .
s3kl:ProductUsagePhase_transportation
      rdf:type owl:Class , s3kl:ProductUsagePhaseType ;
      rdfs:subClassOf s3kl:ProductUsagePhase ;
      s3kl:xsdCode "TRAN" .


# productVariantIdentifier (Req)
s3kl:productVariantIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:vid ;
      rdfs:domain s3kl:ProductVariant .
s3kl:ProductVariantIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:productVariantIdentifier ] .
s3kl:ProductVariantIdentifier_modelIdentificationCode
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ProductVariantIdentifier ;
      s3kl:xsdCode "MOI" .
s3kl:productVariantIdentifier_modelIdentificationCode
      rdf:type owl:DatatypeProperty , s3kl:ProductVariantIdentifier_modelIdentificationCode ;
      rdfs:subPropertyOf s3kl:productVariantIdentifier .
s3kl:ProductVariantIdentifier_modelVersionIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ProductVariantIdentifier ;
      s3kl:xsdCode "MOV" .
s3kl:productVariantIdentifier_modelVersionIdentifier
      rdf:type owl:DatatypeProperty , s3kl:ProductVariantIdentifier_modelVersionIdentifier ;
      rdfs:subPropertyOf s3kl:productVariantIdentifier .
s3kl:ProductVariantIdentifier_productVariantIdentificationCode
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ProductVariantIdentifier ;
      s3kl:xsdCode "PVC" .
s3kl:productVariantIdentifier_productVariantIdentificationCode
      rdf:type owl:DatatypeProperty , s3kl:ProductVariantIdentifier_productVariantIdentificationCode ;
      rdfs:subPropertyOf s3kl:productVariantIdentifier .
s3kl:ProductVariantIdentifier_systemEndItem
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ProductVariantIdentifier ;
      s3kl:xsdCode "UOC" .
s3kl:productVariantIdentifier_systemEndItem
      rdf:type owl:DatatypeProperty , s3kl:ProductVariantIdentifier_systemEndItem ;
      rdfs:subPropertyOf s3kl:productVariantIdentifier .

# productVariantName (Req)
# - use generic s3kl:vname

# --- page 33/ ---
# projectIdentifier
s3kl:projectIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:domain s3kl:Project .
s3kl:ProjectIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:projectIdentifier ] .
s3kl:ProjectIdentifier_PID
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ProjectIdentifier ;
      s3kl:xsdCode "PID" .
s3kl:projectIdentifier_PID
      rdf:type owl:DatatypeProperty , s3kl:ProjectIdentifier_PID ;
      rdfs:subPropertyOf s3kl:projectIdentifier .
s3kl:ProjectIdentifier_MOI
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ProjectIdentifier ;
      s3kl:xsdCode "MOI" .
s3kl:projectIdentifier_MOI
      rdf:type owl:DatatypeProperty , s3kl:ProjectIdentifier_MOI ;
      rdfs:subPropertyOf s3kl:projectIdentifier .

# projectName
# - use generic s3kl:name

# publicationModuleCode
s3kl:publicationModuleCode
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:domain s3kl:S1000DPublicationModule .
s3kl:PublicationModuleCode
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:publicationModuleCode ] .
s3kl:PublicationModuleCode_PMC
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:PublicationModuleCode ;
      s3kl:xsdCode "PMC" .
s3kl:publicationModuleCode_PMC
      rdf:type owl:DatatypeProperty , s3kl:PublicationModuleCode_PMC ;
      rdfs:subPropertyOf s3kl:publicationModuleCode .

# publicationModuleTitle
s3kl:publicationModuleTitle
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:description ;
      rdfs:domain s3kl:S1000DPublicationModule .

# publicationModuleIssueNumber
s3kl:publicationModuleIssueNumber
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:vid ;
      rdfs:domain s3kl:S1000DPublicationModuleIssue .
s3kl:PublicationModuleIssueNumber
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:publicationModuleIssueNumber ] .
s3kl:PublicationModuleIssueNumber_revisionIdentification
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:PublicationModuleIssueNumber ;
      s3kl:xsdCode "REV" .
s3kl:publicationModuleIssueNumber_revisionIdentification
      rdf:type owl:DatatypeProperty , s3kl:PublicationModuleIssueNumber_revisionIdentification ;
      rdfs:subPropertyOf s3kl:publicationModuleIssueNumber .
s3kl:PublicationModuleIssueNumber_issueNumber
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:PublicationModuleIssueNumber ;
      s3kl:xsdCode "ISS" .
s3kl:publicationModuleIssueNumber_issueNumber
      rdf:type owl:DatatypeProperty , s3kl:PublicationModuleIssueNumber_issueNumber ;
      rdfs:subPropertyOf s3kl:publicationModuleIssueNumber .

# quantityOfChildElement (Req)2x
# - Note: referenceDesignator and quantityOfChildElement are moved to BreakdownElementUsageInBreakdown
s3kl:quantityOfChildElement
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:BreakdownElementUsageInBreakdown_or_PartAsDesignedPartsListEntry .
s3kl:BreakdownElementUsageInBreakdown_or_PartAsDesignedPartsListEntry
      rdf:type owl:Class ;
      owl:unionOf ( s3kl:BreakdownElementUsageInBreakdown s3kl:PartAsDesignedPartsListEntry ) .

# quantityOfContainedSubstance
s3kl:quantityOfContainedSubstance
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:ContainedSubstance .

# quantityOfContractedProductVariant (Req)
s3kl:quantityOfContractedProductVariant
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:ContractedProductVariant .

# quantityOfProductVariantAtOperatingLocation
s3kl:quantityOfProductVariantAtOperatingLocation
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:ContractedProductVariantAtOperatingLocation .

# --- page 34/ ---
# quantityOfProductVariantAtOperatingLocationType
s3kl:quantityOfProductVariantAtOperatingLocationType
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:ContractedProductVariantAtOperatingLocationType .

# referenceDesignator
# - NOTE: BreakdownElementStructure replaced by s3kl:BreakdownElementUsageInBreakdown
# - Note: s3kl:BreakdownElementUsageInBreakdown_or_PartAsDesignedPartsListEntry already defined elsewhere
s3kl:referenceDesignator
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:domain s3kl:BreakdownElementUsageInBreakdown_or_PartAsDesignedPartsListEntry .
s3kl:ReferenceDesignator
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:referenceDesignator ] .
s3kl:ReferenceDesignator_RFD
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ReferenceDesignator ;
      s3kl:xsdCode "RFD" .
s3kl:referenceDesignator_RFD
      rdf:type owl:DatatypeProperty , s3kl:ReferenceDesignator_RFD ;
      rdfs:subPropertyOf s3kl:referenceDesignator .

# remarkText (Req)2x
# - use generic s3kl:description

# remarkType
s3kl:RemarkType
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:Remark ] . 
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:RemarkType_comment s3kl:RemarkType_response s3kl:RemarkType_note s3kl:RemarkType_remark ) .
s3kl:RemarkType_comment
      rdf:type owl:Class , s3kl:RemarkType ;
      rdfs:subClassOf s3kl:Remark ;
      s3kl:xsdCode "COM" .
s3kl:RemarkType_response
      rdf:type owl:Class , s3kl:RemarkType ;
      rdfs:subClassOf s3kl:Remark ;
      s3kl:xsdCode "RSP" .
s3kl:RemarkType_note
      rdf:type owl:Class , s3kl:RemarkType ;
      rdfs:subClassOf s3kl:Remark ;
      s3kl:xsdCode "NTE" .
s3kl:RemarkType_remark
      rdf:type owl:Class , s3kl:RemarkType ;
      rdfs:subClassOf s3kl:Remark ;
      s3kl:xsdCode "REM" .

# replacementTime
s3kl:replacementTime
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:ReplacementTime .

# resourceSpecificationDescription (Req)
# - use generic s3kl:description

# resourceSpecificationIdentifier (Req)
s3kl:resourceSpecificationIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:domain s3kl:ResourceSpecification .
s3kl:ResourceSpecificationIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:resourceSpecificationIdentifier ] .
s3kl:ResourceSpecificationIdentifier_RSID
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ResourceSpecificationIdentifier ;
      s3kl:xsdCode "RSID" .
s3kl:resourceSpecificationIdentifier_RSID
      rdf:type owl:DatatypeProperty , s3kl:ResourceSpecificationIdentifier_RSID ;
      rdfs:subPropertyOf s3kl:resourceSpecificationIdentifier .
s3kl:ResourceSpecificationIdentifier_CIR
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ResourceSpecificationIdentifier ;
      s3kl:xsdCode "CIR" .
s3kl:resourceSpecificationIdentifier_CIR
      rdf:type owl:DatatypeProperty , s3kl:ResourceSpecificationIdentifier_CIR ;
      rdfs:subPropertyOf s3kl:resourceSpecificationIdentifier .
s3kl:ResourceSpecificationIdentifier_STD
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ResourceSpecificationIdentifier ;
      s3kl:xsdCode "STD" .
s3kl:resourceSpecificationIdentifier_STD
      rdf:type owl:DatatypeProperty , s3kl:ResourceSpecificationIdentifier_STD ;
      rdfs:subPropertyOf s3kl:resourceSpecificationIdentifier .

# --- page 35/ ---
# resourceSpecificationName (Req)
# - use generic s3kl:name

# samplingMethodDescription
# - use generic s3kl:description

# samplingRatio
s3kl:samplingRatio
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:SamplingDefinitionByRatio ;
      rdfs:range xsd:double .

# samplingValue
s3kl:samplingValue
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:SamplingDefinitionByValue .

# scheduledMaintenanceInterval
s3kl:scheduledMaintenanceInterval
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:ScheduledMaintenanceInterval .

# securityClass
s3kl:SecurityClassType
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:SecurityClass ] . 
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:SecurityClassType_confidential s3kl:SecurityClassType_companyConfidential s3kl:SecurityClassType_restricted s3kl:SecurityClassType_secret s3kl:SecurityClassType_topSecret s3kl:SecurityClassType_unclassified ) .
s3kl:SecurityClassType_confidential
      rdf:type owl:Class , s3kl:SecurityClassType ;
      rdfs:subClassOf s3kl:SecurityClass ;
      s3kl:xsdCode "C" .
s3kl:SecurityClassType_companyConfidential
      rdf:type owl:Class , s3kl:SecurityClassType ;
      rdfs:subClassOf s3kl:SecurityClass ;
      s3kl:xsdCode "CC" .
s3kl:SecurityClassType_restricted
      rdf:type owl:Class , s3kl:SecurityClassType ;
      rdfs:subClassOf s3kl:SecurityClass ;
      s3kl:xsdCode "R" .
s3kl:SecurityClassType_secret
      rdf:type owl:Class , s3kl:SecurityClassType ;
      rdfs:subClassOf s3kl:SecurityClass ;
      s3kl:xsdCode "S" .
s3kl:SecurityClassType_topSecret
      rdf:type owl:Class , s3kl:SecurityClassType ;
      rdfs:subClassOf s3kl:SecurityClass ;
      s3kl:xsdCode "TS" .
s3kl:SecurityClassType_unclassified
      rdf:type owl:Class , s3kl:SecurityClassType ;
      rdfs:subClassOf s3kl:SecurityClass ;
      s3kl:xsdCode "UC" .

# shopProcessingTime
s3kl:shopProcessingTime
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:ShopProcessingTime .

# --- page 36/ ---
# skillCode (Req)
s3kl:skillCode
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:domain s3kl:Skill .
s3kl:SkillCode
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:skillCode ] .
s3kl:SkillCode_SC
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:SkillCode ;
      s3kl:xsdCode "SC" .
s3kl:skillCode_SC
      rdf:type owl:DatatypeProperty , s3kl:SkillCode_SC ;
      rdfs:subPropertyOf s3kl:skillCode .

# skillLevelDescription
# - use generic s3kl:description

# skillLevelName (Req)
s3kl:SkillLevelType
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:SkillLevel ] . 
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:SkillLevelType_advanced s3kl:SkillLevelType_intermediate s3kl:SkillLevelType_basic ) .
s3kl:SkillLevelType_advanced
      rdf:type owl:Class , s3kl:SkillLevelType ;
      rdfs:subClassOf s3kl:SkillLevel ;
      s3kl:xsdCode "A" .
s3kl:SkillLevelType_intermediate
      rdf:type owl:Class , s3kl:SkillLevelType ;
      rdfs:subClassOf s3kl:SkillLevel ;
      s3kl:xsdCode "T" .
s3kl:SkillLevelType_basic
      rdf:type owl:Class , s3kl:SkillLevelType ;
      rdfs:subClassOf s3kl:SkillLevel ;
      s3kl:xsdCode "B" .

# softwareElementModificationFrequency
s3kl:softwareElementModificationFrequency
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:SoftwareElementRevision .

# softwareElementSize
s3kl:softwareElementSize
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:SoftwareElementRevision .

# softwareElementType (Req)
s3kl:SoftwareElementType
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:SoftwareElement ] . 
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:SoftwareElementType_loadable s3kl:SoftwareElementType_embedded s3kl:SoftwareElementType_distributed ) .
s3kl:SoftwareElementType_distributed
      rdf:type owl:Class , s3kl:SoftwareElementType ;
      rdfs:subClassOf s3kl:SoftwareElement ;
      s3kl:xsdCode "D" .
s3kl:SoftwareElementType_embedded
      rdf:type owl:Class , s3kl:SoftwareElementType ;
      rdfs:subClassOf s3kl:SoftwareElement ;
      s3kl:xsdCode "E" .
s3kl:SoftwareElementType_loadable
      rdf:type owl:Class , s3kl:SoftwareElementType ;
      rdfs:subClassOf s3kl:SoftwareElement ;
      s3kl:xsdCode "L" .

# --- page 37/ ---
# softwarePartSize (Req)
s3kl:softwarePartSize
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:SoftwarePartAsDesignedDesignData .

# softwareType (Req)
s3kl:SoftwareType
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:SoftwarePartAsDesignedDesignData ] . 
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:SoftwareType_loadable s3kl:SoftwareType_embedded s3kl:SoftwareType_distributed ) .
s3kl:SoftwareType_distributed
      rdf:type owl:Class , s3kl:SoftwareType ;
      rdfs:subClassOf s3kl:SoftwarePartAsDesignedDesignData ;
      s3kl:xsdCode "D" .
s3kl:SoftwareType_embedded
      rdf:type owl:Class , s3kl:SoftwareType ;
      rdfs:subClassOf s3kl:SoftwarePartAsDesignedDesignData ;
      s3kl:xsdCode "E" .
s3kl:SoftwareType_loadable
      rdf:type owl:Class , s3kl:SoftwareType ;
      rdfs:subClassOf s3kl:SoftwarePartAsDesignedDesignData ;
      s3kl:xsdCode "L" .

# specialEventDescription
# - use generic s3kl:description

# specialEventGroup
s3kl:SpecialEventGroup
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:SpecialEvent ] . 
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:SpecialEventGroup_externalCauseSpecialEvent s3kl:SpecialEventGroup_naturalPhenomenonSpecialEvent s3kl:SpecialEventGroup_meteorologicalSpecialEvent s3kl:SpecialEventGroup_animalSpecialEvent s3kl:SpecialEventGroup_humanImpactSpecialEvent s3kl:SpecialEventGroup_combatSpecialEvent s3kl:SpecialEventGroup_materialManeuverSpecialEvent s3kl:SpecialEventGroup_internalCauseSpecialEvent s3kl:SpecialEventGroup_internalDysfunctionSpecialEvent s3kl:SpecialEventGroup_extensiveHeatSpecialEvent s3kl:SpecialEventGroup_extensiveVibrationSpecialEvent ) .
s3kl:SpecialEventGroup_externalCauseSpecialEvent
      rdf:type owl:Class , s3kl:SpecialEventGroup ;
      rdfs:subClassOf s3kl:SpecialEvent ;
      s3kl:xsdCode "EXT" .
s3kl:SpecialEventGroup_naturalPhenomenonSpecialEvent
      rdf:type owl:Class , s3kl:SpecialEventGroup ;
      rdfs:subClassOf s3kl:SpecialEvent ;
      s3kl:xsdCode "NPH" .
s3kl:SpecialEventGroup_meteorologicalSpecialEvent
      rdf:type owl:Class , s3kl:SpecialEventGroup ;
      rdfs:subClassOf s3kl:SpecialEvent ;
      s3kl:xsdCode "MET" .
s3kl:SpecialEventGroup_animalSpecialEvent
      rdf:type owl:Class , s3kl:SpecialEventGroup ;
      rdfs:subClassOf s3kl:SpecialEvent ;
      s3kl:xsdCode "ANI" .
s3kl:SpecialEventGroup_humanImpactSpecialEvent
      rdf:type owl:Class , s3kl:SpecialEventGroup ;
      rdfs:subClassOf s3kl:SpecialEvent ;
      s3kl:xsdCode "HUM" .
s3kl:SpecialEventGroup_combatSpecialEvent
      rdf:type owl:Class , s3kl:SpecialEventGroup ;
      rdfs:subClassOf s3kl:SpecialEvent ;
      s3kl:xsdCode "CBT" .
s3kl:SpecialEventGroup_materialManeuverSpecialEvent
      rdf:type owl:Class , s3kl:SpecialEventGroup ;
      rdfs:subClassOf s3kl:SpecialEvent ;
      s3kl:xsdCode "MNU" .
s3kl:SpecialEventGroup_internalCauseSpecialEvent
      rdf:type owl:Class , s3kl:SpecialEventGroup ;
      rdfs:subClassOf s3kl:SpecialEvent ;
      s3kl:xsdCode "INT" .
s3kl:SpecialEventGroup_internalDysfunctionSpecialEvent
      rdf:type owl:Class , s3kl:SpecialEventGroup ;
      rdfs:subClassOf s3kl:SpecialEvent ;
      s3kl:xsdCode "DYS" .
s3kl:SpecialEventGroup_extensiveHeatSpecialEvent
      rdf:type owl:Class , s3kl:SpecialEventGroup ;
      rdfs:subClassOf s3kl:SpecialEvent ;
      s3kl:xsdCode "HET" .
s3kl:SpecialEventGroup_extensiveVibrationSpecialEvent
      rdf:type owl:Class , s3kl:SpecialEventGroup ;
      rdfs:subClassOf s3kl:SpecialEvent ;
      s3kl:xsdCode "VIB" .

# --- page 38/604 ---
# specialEventOccurrenceRate
s3kl:specialEventOccurrenceRate
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:QuantifiedSpecialEventOccurrence .

# specialEventOccurrenceRating
s3kl:SpecialEventOccurrenceRating
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:RatedSpecialEventOccurrence ] . 
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:SpecialEventOccurrenceRating_extremelyUnlikely s3kl:SpecialEventOccurrenceRating_remoteLikelihood s3kl:SpecialEventOccurrenceRating_occasional s3kl:SpecialEventOccurrenceRating_reasonablyProbable s3kl:SpecialEventOccurrenceRating_frequent ) .
s3kl:SpecialEventOccurrenceRating_extremelyUnlikely
      rdf:type owl:Class , s3kl:SpecialEventOccurrenceRating ;
      rdfs:subClassOf s3kl:RatedSpecialEventOccurrence ;
      s3kl:xsdCode "EUN" .
s3kl:SpecialEventOccurrenceRating_remoteLikelihood
      rdf:type owl:Class , s3kl:SpecialEventOccurrenceRating ;
      rdfs:subClassOf s3kl:RatedSpecialEventOccurrence ;
      s3kl:xsdCode "REM" .
s3kl:SpecialEventOccurrenceRating_occasional
      rdf:type owl:Class , s3kl:SpecialEventOccurrenceRating ;
      rdfs:subClassOf s3kl:RatedSpecialEventOccurrence ;
      s3kl:xsdCode "OCC" .
s3kl:SpecialEventOccurrenceRating_reasonablyProbable
      rdf:type owl:Class , s3kl:SpecialEventOccurrenceRating ;
      rdfs:subClassOf s3kl:RatedSpecialEventOccurrence ;
      s3kl:xsdCode "PROB" .
s3kl:SpecialEventOccurrenceRating_frequent
      rdf:type owl:Class , s3kl:SpecialEventOccurrenceRating ;
      rdfs:subClassOf s3kl:RatedSpecialEventOccurrence ;
      s3kl:xsdCode "FREQ" .

# specialEventTitle
s3kl:SpecialEventTitle
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:SpecialEvent ] . 

# substanceCharacteristicsRecordingDate
s3kl:substanceCharacteristicsRecordingDate
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:dateTimeProperty .

# substanceDescription
# - use generic s3kl:description

# substanceIdentifier (Req)
s3kl:substanceIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:domain s3kl:SubstanceDefinition .
s3kl:SubstanceIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:substanceIdentifier ] .
s3kl:SubstanceIdentifier_SI
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:SubstanceIdentifier ;
      s3kl:xsdCode "SI" .
s3kl:substanceIdentifier_SI
      rdf:type owl:DatatypeProperty , s3kl:SubstanceIdentifier_SI ;
      rdfs:subPropertyOf s3kl:substanceIdentifier .
s3kl:SubstanceIdentifier_CAS
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:SubstanceIdentifier ;
      s3kl:xsdCode "CAS" .
s3kl:substanceIdentifier_CAS
      rdf:type owl:DatatypeProperty , s3kl:SubstanceIdentifier_CAS ;
      rdfs:subPropertyOf s3kl:substanceIdentifier .
s3kl:SubstanceIdentifier_EINECS
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:SubstanceIdentifier ;
      s3kl:xsdCode "EINECS" .
s3kl:substanceIdentifier_EINECS
      rdf:type owl:DatatypeProperty , s3kl:SubstanceIdentifier_EINECS ;
      rdfs:subPropertyOf s3kl:substanceIdentifier .

# substanceName (Req)
# - use generic s3kl:name

# substanceRiskDescription
s3kl:substanceRiskDescription
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:description ;
      rdfs:domain s3kl:SubstanceDefinition .

# --- page 39/ ---
# substanceRiskFactor
s3kl:SubstanceRiskFactor
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:SubstanceDefinition ] . 

# substanceUsageCategory
s3kl:SubstanceUsageCategory
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:SubstanceDefinition ] .
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:SubstanceUsageCategory_forbidden s3kl:SubstanceUsageCategory_authorizedWithLimitation s3kl:SubstanceUsageCategory_authorizedSubstance ) .
s3kl:SubstanceUsageCategory_forbidden
      rdf:type owl:Class , s3kl:SubstanceUsageCategory ;
      rdfs:subClassOf s3kl:SubstanceDefinition ;
      s3kl:xsdCode "F" .
s3kl:SubstanceUsageCategory_authorizedWithLimitation
      rdf:type owl:Class , s3kl:SubstanceUsageCategory ;
      rdfs:subClassOf s3kl:SubstanceDefinition ;
      s3kl:xsdCode "AL" .
s3kl:SubstanceUsageCategory_authorizedSubstance
      rdf:type owl:Class , s3kl:SubstanceUsageCategory ;
      rdfs:subClassOf s3kl:SubstanceDefinition ;
      s3kl:xsdCode "AL" .
# - error in XSD, same code AL

# subtaskAcceptanceParameterDescription (Req)
# - use generic s3kl:description

# subtaskAcceptanceParameterValue (Req)
s3kl:subtaskAcceptanceParameterValue
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:SubtaskAcceptanceParameter .

# subtaskDescription
# - use generic s3kl:description

# subtaskDuration (Req)
s3kl:subtaskDuration
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:SubtaskByDefinition .

# --- page 40/ ---
# subtaskEndItemObjectiveState
s3kl:SubtaskEndItemObjectiveState
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:SubtaskByDefinition ] . 
s3kl:SubtaskEndItemObjectiveState_taskChecked
      rdf:type owl:Class , s3kl:SubtaskEndItemObjectiveState ;
      rdfs:subClassOf s3kl:SubtaskByDefinition ;
      s3kl:xsdCode "TC" .
s3kl:SubtaskEndItemObjectiveState_jacked
      rdf:type owl:Class , s3kl:SubtaskEndItemObjectiveState ;
      rdfs:subClassOf s3kl:SubtaskByDefinition ;
      s3kl:xsdCode "JC" .
s3kl:SubtaskEndItemObjectiveState_unjacked
      rdf:type owl:Class , s3kl:SubtaskEndItemObjectiveState ;
      rdfs:subClassOf s3kl:SubtaskByDefinition ;
      s3kl:xsdCode "UJ" .
s3kl:SubtaskEndItemObjectiveState_safetyDeviceEstablished
      rdf:type owl:Class , s3kl:SubtaskEndItemObjectiveState ;
      rdfs:subClassOf s3kl:SubtaskByDefinition ;
      s3kl:xsdCode "SY" .
s3kl:SubtaskEndItemObjectiveState_elecricalPowerEstablished
      rdf:type owl:Class , s3kl:SubtaskEndItemObjectiveState ;
      rdfs:subClassOf s3kl:SubtaskByDefinition ;
      s3kl:xsdCode "EL" .
s3kl:SubtaskEndItemObjectiveState_elecricalPowerFromEngineEstablished
      rdf:type owl:Class , s3kl:SubtaskEndItemObjectiveState ;
      rdfs:subClassOf s3kl:SubtaskByDefinition ;
      s3kl:xsdCode "EEL" .
s3kl:SubtaskEndItemObjectiveState_elecricalPowerFromAPUEstablished
      rdf:type owl:Class , s3kl:SubtaskEndItemObjectiveState ;
      rdfs:subClassOf s3kl:SubtaskByDefinition ;
      s3kl:xsdCode "AEL" .
s3kl:SubtaskEndItemObjectiveState_externalElecricalPowerEstablished
      rdf:type owl:Class , s3kl:SubtaskEndItemObjectiveState ;
      rdfs:subClassOf s3kl:SubtaskByDefinition ;
      s3kl:xsdCode "EEL" .
# - error in XSD, double EEL
s3kl:SubtaskEndItemObjectiveState_internalElecricalPowerEstablished
      rdf:type owl:Class , s3kl:SubtaskEndItemObjectiveState ;
      rdfs:subClassOf s3kl:SubtaskByDefinition ;
      s3kl:xsdCode "IEL" .
s3kl:SubtaskEndItemObjectiveState_hydraulicPowerEstablished
      rdf:type owl:Class , s3kl:SubtaskEndItemObjectiveState ;
      rdfs:subClassOf s3kl:SubtaskByDefinition ;
      s3kl:xsdCode "HPE" .
s3kl:SubtaskEndItemObjectiveState_airSupplyEstablished
      rdf:type owl:Class , s3kl:SubtaskEndItemObjectiveState ;
      rdfs:subClassOf s3kl:SubtaskByDefinition ;
      s3kl:xsdCode "AS" .
s3kl:SubtaskEndItemObjectiveState_fueled
      rdf:type owl:Class , s3kl:SubtaskEndItemObjectiveState ;
      rdfs:subClassOf s3kl:SubtaskByDefinition ;
      s3kl:xsdCode "FU" .
s3kl:SubtaskEndItemObjectiveState_defueled
      rdf:type owl:Class , s3kl:SubtaskEndItemObjectiveState ;
      rdfs:subClassOf s3kl:SubtaskByDefinition ;
      s3kl:xsdCode "DF" .
s3kl:SubtaskEndItemObjectiveState_waterSupplyEstablished
      rdf:type owl:Class , s3kl:SubtaskEndItemObjectiveState ;
      rdfs:subClassOf s3kl:SubtaskByDefinition ;
      s3kl:xsdCode "WS" .
s3kl:SubtaskEndItemObjectiveState_controlStatusEstablished
      rdf:type owl:Class , s3kl:SubtaskEndItemObjectiveState ;
      rdfs:subClassOf s3kl:SubtaskByDefinition ;
      s3kl:xsdCode "CS" .

# subtaskIdentifier (Req)
s3kl:subtaskIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:domain s3kl:Subtask .
s3kl:SubtaskIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:subtaskIdentifier ] .
s3kl:SubtaskIdentifier_SID
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:SubtaskIdentifier ;
      s3kl:xsdCode "SID" .
s3kl:subtaskIdentifier_SID
      rdf:type owl:DatatypeProperty , s3kl:SubtaskIdentifier_SID ;
      rdfs:subPropertyOf s3kl:subtaskIdentifier .

# --- page 41/ ---
# subtaskMaintenanceLocation
s3kl:SubtaskMaintenanceLocation
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:SubtaskByDefinition ] . 
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:SubtaskMaintenanceLocation_S1000D_ItemLocationCode_A s3kl:SubtaskMaintenanceLocation_S1000D_ItemLocationCode_B s3kl:SubtaskMaintenanceLocation_S1000D_ItemLocationCode_C s3kl:SubtaskMaintenanceLocation_S1000D_ItemLocationCode_D ) .
s3kl:SubtaskMaintenanceLocation_S1000D_ItemLocationCode_A
      rdf:type owl:Class , s3kl:SubtaskMaintenanceLocation ;
      rdfs:subClassOf s3kl:SubtaskByDefinition ;
      s3kl:xsdCode "A" .
s3kl:SubtaskMaintenanceLocation_S1000D_ItemLocationCode_B
      rdf:type owl:Class , s3kl:SubtaskMaintenanceLocation ;
      rdfs:subClassOf s3kl:SubtaskByDefinition ;
      s3kl:xsdCode "B" .
s3kl:SubtaskMaintenanceLocation_S1000D_ItemLocationCode_C
      rdf:type owl:Class , s3kl:SubtaskMaintenanceLocation ;
      rdfs:subClassOf s3kl:SubtaskByDefinition ;
      s3kl:xsdCode "C" .
s3kl:SubtaskMaintenanceLocation_S1000D_ItemLocationCode_D
      rdf:type owl:Class , s3kl:SubtaskMaintenanceLocation ;
      rdfs:subClassOf s3kl:SubtaskByDefinition ;
      s3kl:xsdCode "D" .

# subtaskName (Req)
# - use generic s3kl:name

# subtaskRole (Req)
s3kl:SubtaskRole
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:Subtask ] . 
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:SubtaskRole_startup s3kl:SubtaskRole_core s3kl:SubtaskRole_coreNoRequiredConditions s3kl:SubtaskRole_closeup ) .
s3kl:SubtaskRole_startup
      rdf:type owl:Class , s3kl:SubtaskRole ;
      rdfs:subClassOf s3kl:Subtask ;
      s3kl:xsdCode "ST" .
s3kl:SubtaskRole_core
      rdf:type owl:Class , s3kl:SubtaskRole ;
      rdfs:subClassOf s3kl:Subtask ;
      s3kl:xsdCode "COR" .
s3kl:SubtaskRole_coreNoRequiredConditions
      rdf:type owl:Class , s3kl:SubtaskRole ;
      rdfs:subClassOf s3kl:Subtask ;
      s3kl:xsdCode "CON" .
s3kl:SubtaskRole_closeup
      rdf:type owl:Class , s3kl:SubtaskRole ;
      rdfs:subClassOf s3kl:Subtask ;
      s3kl:xsdCode "CL" .

# subtaskTimelineEvent (Req)
s3kl:SubtaskTimelineEvent
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:SubtaskTimeline ] . 

s3kl:SubtaskTimelineEvent_start
      rdf:type owl:Class , s3kl:SubtaskTimelineEvent ;
      rdfs:subClassOf s3kl:SubtaskTimeline ;
      s3kl:xsdCode "START" .
s3kl:subtaskTimeline_start
      rdf:type owl:ObjectProperty , s3kl:SubtaskTimelineEvent_start ;
      rdfs:subPropertyOf s3kl:subtaskTimeline .

s3kl:SubtaskTimelineEvent_end
      rdf:type owl:Class , s3kl:SubtaskTimelineEvent ;
      rdfs:subClassOf s3kl:SubtaskTimeline ;
      s3kl:xsdCode "END" .
s3kl:subtaskTimeline_end
      rdf:type owl:ObjectProperty , s3kl:SubtaskTimelineEvent_end ;
      rdfs:subPropertyOf s3kl:subtaskTimeline .

# --- page 42/ ---
# subtaskTimelineLag (Req)
s3kl:subtaskTimelineLag
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:subtaskTimeline .

# taskDuration (Req)
s3kl:taskDuration
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:TaskRevision .

# taskIdentifier (Req)
s3kl:taskIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:domain s3kl:Task .
s3kl:TaskIdentifier
      rdf:type owl:Class ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:taskIdentifier ] .
s3kl:TaskIdentifier_TID
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:TaskIdentifier ;
      s3kl:xsdCode "TID" .
s3kl:taskIdentifier_TID
      rdf:type owl:DatatypeProperty , s3kl:TaskIdentifier_TID ;
      rdfs:subPropertyOf s3kl:taskIdentifier .

# taskFacilityResourceQuantity (Req)
s3kl:taskFacilityResourceQuantity
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:TaskFacilityResource .

# taskFrequency (Req)
s3kl:taskFrequency
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:TaskFrequency .

# taskFrequencyCalculationMethod
s3kl:taskFrequencyCalculationMethod
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:description ;
      rdfs:domain s3kl:TaskFrequency .

# --- page 43/ ---
# taskMaterialResourceCategory (Req)
s3kl:TaskMaterialResourceCategory
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:TaskMaterialResource ] . 
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:TaskMaterialResourceCategory_supportEquipment s3kl:TaskMaterialResourceCategory_safetyRelatedSupportEquipment s3kl:TaskMaterialResourceCategory_spare s3kl:TaskMaterialResourceCategory_supply ) .
s3kl:TaskMaterialResourceCategory_supportEquipment
      rdf:type owl:Class , s3kl:TaskMaterialResourceCategory ;
      rdfs:subClassOf s3kl:TaskMaterialResource ;
      s3kl:xsdCode "SPE" .
s3kl:TaskMaterialResourceCategory_safetyRelatedSupportEquipment
      rdf:type owl:Class , s3kl:TaskMaterialResourceCategory ;
      rdfs:subClassOf s3kl:TaskMaterialResource ;
      s3kl:xsdCode "SSPE" .
s3kl:TaskMaterialResourceCategory_spare
      rdf:type owl:Class , s3kl:TaskMaterialResourceCategory ;
      rdfs:subClassOf s3kl:TaskMaterialResource ;
      s3kl:xsdCode "SPA" .
s3kl:TaskMaterialResourceCategory_supply
      rdf:type owl:Class , s3kl:TaskMaterialResourceCategory ;
      rdfs:subClassOf s3kl:TaskMaterialResource ;
      s3kl:xsdCode "SPY" .

# taskMaterialResourceQuantity (Req)
s3kl:taskMaterialResourceQuantity
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:TaskMaterialResource .

# taskName (Req)
# - use generic s3kl:name

# taskNumberOfPersonnelResource (Req)
s3kl:taskNumberOfPersonnelResource
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:TaskPersonnelResource .

# --- page 44/ ---
# taskOperabilityImpact (Req)
s3kl:TaskOperabilityImpact
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:TaskRevision ] . 
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:TaskOperabilityImpact_systemInoperableDuringEquipmentMaintenance s3kl:TaskOperabilityImpact_systemOperableDuringEquipmentMaintenance s3kl:TaskOperabilityImpact_fullMissionCapable s3kl:TaskOperabilityImpact_partialMissionCapable s3kl:TaskOperabilityImpact_notMissionCapable s3kl:TaskOperabilityImpact_turnaround ) .
s3kl:TaskOperabilityImpact_systemInoperableDuringEquipmentMaintenance
      rdf:type owl:Class , s3kl:TaskOperabilityImpact ;
      rdfs:subClassOf s3kl:TaskRevision ;
      s3kl:xsdCode "NEQM" .
s3kl:TaskOperabilityImpact_systemOperableDuringEquipmentMaintenance
      rdf:type owl:Class , s3kl:TaskOperabilityImpact ;
      rdfs:subClassOf s3kl:TaskRevision ;
      s3kl:xsdCode "OPEQM" .
s3kl:TaskOperabilityImpact_partialMissionCapable
      rdf:type owl:Class , s3kl:TaskOperabilityImpact ;
      rdfs:subClassOf s3kl:TaskRevision ;
      s3kl:xsdCode "PMISS" .
s3kl:TaskOperabilityImpact_fullMissionCapable
      rdf:type owl:Class , s3kl:TaskOperabilityImpact ;
      rdfs:subClassOf s3kl:TaskRevision ;
      s3kl:xsdCode "FMISS" .
s3kl:TaskOperabilityImpact_notMissionCapable
      rdf:type owl:Class , s3kl:TaskOperabilityImpact ;
      rdfs:subClassOf s3kl:TaskRevision ;
      s3kl:xsdCode "NMISS" .
s3kl:TaskOperabilityImpact_turnaround
      rdf:type owl:Class , s3kl:TaskOperabilityImpact ;
      rdfs:subClassOf s3kl:TaskRevision ;
      s3kl:xsdCode "TA" .

# taskPersonnelResourceLabourTime (Req)
s3kl:taskPersonnelResourceLabourTime
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:TaskPersonnelResource .

# taskPersonnelResourceRole (Req)
s3kl:TaskPersonnelResourceRole
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:TaskPersonnelResource ] . 
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:TaskPersonnelResourceRole_ManA s3kl:TaskPersonnelResourceRole_ManB s3kl:TaskPersonnelResourceRole_Performer s3kl:TaskPersonnelResourceRole_Supervisor s3kl:TaskPersonnelResourceRole_QualityAssurance ) .
s3kl:TaskPersonnelResourceRole_ManA
      rdf:type owl:Class , s3kl:TaskPersonnelResourceRole ;
      rdfs:subClassOf s3kl:TaskPersonnelResource ;
      s3kl:xsdCode "MAN-A" .
s3kl:TaskPersonnelResourceRole_ManB
      rdf:type owl:Class , s3kl:TaskPersonnelResourceRole ;
      rdfs:subClassOf s3kl:TaskPersonnelResource ;
      s3kl:xsdCode "MAN-B" .
s3kl:TaskPersonnelResourceRole_Performer
      rdf:type owl:Class , s3kl:TaskPersonnelResourceRole ;
      rdfs:subClassOf s3kl:TaskPersonnelResource ;
      s3kl:xsdCode "PERF" .
s3kl:TaskPersonnelResourceRole_Supervisor
      rdf:type owl:Class , s3kl:TaskPersonnelResourceRole ;
      rdfs:subClassOf s3kl:TaskPersonnelResource ;
      s3kl:xsdCode "SUP" .
s3kl:TaskPersonnelResourceRole_QualityAssurance
      rdf:type owl:Class , s3kl:TaskPersonnelResourceRole ;
      rdfs:subClassOf s3kl:TaskPersonnelResource ;
      s3kl:xsdCode "QA" .

# taskPersonnelSafetyCriticality (Req)
s3kl:TaskPersonnelSafetyCriticality
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:TaskRevision ] . 

# --- page 45/ ---
# taskProductIntegrityCriticality (Req)
s3kl:TaskProductIntegrityCriticality
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:TaskRevision ] . 

# taskRequirementAuthority
# taskRequirementAuthoritySourceType
s3kl:TaskRequirementAuthoritySourceType
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:TaskRevision ] . 

# taskRequirementRevisionChange Description
# - use generic s3kl:description

# taskRequirementDate
s3kl:taskRequirementDate
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:dateTimeProperty .

# taskRequirementDecision
s3kl:TaskRequirementDecision
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:TaskRequirementRevision ] . 
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:TaskRequirementDecision_Accepted s3kl:TaskRequirementDecision_Rejected s3kl:TaskRequirementDecision_Deferred s3kl:TaskRequirementDecision_Realized ) .
s3kl:TaskRequirementDecision_Accepted
      rdf:type s3kl:TaskRequirementDecision ;
      rdfs:subClassOf s3kl:TaskRequirementRevision ;
      s3kl:xsdCode "A" .
s3kl:TaskRequirementDecision_Rejected
      rdf:type owl:Class , s3kl:TaskRequirementDecision ;
      rdfs:subClassOf s3kl:TaskRequirementRevision ;
      s3kl:xsdCode "RJ" .
s3kl:TaskRequirementDecision_Deferred
      rdf:type owl:Class , s3kl:TaskRequirementDecision ;
      rdfs:subClassOf s3kl:TaskRequirementRevision ;
      s3kl:xsdCode "D" .
s3kl:TaskRequirementDecision_Realized
      rdf:type owl:Class , s3kl:TaskRequirementDecision ;
      rdfs:subClassOf s3kl:TaskRequirementRevision ;
      s3kl:xsdCode "RZ" .

# --- page 46/ ---
# taskRequirementDescription
# - use generic s3kl:description

# taskRequirementIdentifier
s3kl:taskRequirementIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:domain s3kl:TaskRequirement .
s3kl:TaskRequirementIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:taskRequirementIdentifier ] .
s3kl:TaskRequirementIdentifier_TRID
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:TaskRequirementIdentifier_TRID ;
      s3kl:xsdCode "TRID" .
s3kl:taskRequirementIdentifier_TRID
      rdf:type owl:DatatypeProperty , s3kl:TaskRequirementIdentifier_TRID ;
      rdfs:subPropertyOf s3kl:taskRequirementIdentifier .

# taskRequirementRevisionIdentifier
s3kl:taskRequirementRevisionIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:vid ;
      rdfs:domain s3kl:TaskRequirementRevision .
s3kl:TaskRequirementRevisionIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:taskRequirementRevisionIdentifier ] .
s3kl:TaskRequirementRevisionIdentifier_REV
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:TaskRequirementRevisionIdentifier ;
      s3kl:xsdCode "REV" .
s3kl:taskRequirementRevisionIdentifier_REV
      rdf:type owl:DatatypeProperty , s3kl:TaskRequirementRevisionIdentifier_REV ;
      rdfs:subPropertyOf s3kl:taskRequirementRevisionIdentifier .
s3kl:TaskRequirementRevisionIdentifier_ISS
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:TaskRequirementRevisionIdentifier ;
      s3kl:xsdCode "ISS" .
s3kl:taskRequirementRevisionIdentifier_ISS
      rdf:type owl:DatatypeProperty , s3kl:TaskRequirementRevisionIdentifier_ISS ;
      rdfs:subPropertyOf s3kl:taskRequirementRevisionIdentifier .

# taskRequirementSpecialResourceRequirement
s3kl:taskRequirementSpecialResourceRequirement
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:description ;
      rdfs:domain s3kl:TaskRequirementRevision .

# taskResourceDuration (Req)
s3kl:taskResourceDuration
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:TaskResource .

# taskResourceRelationshipCategory
s3kl:TaskResourceRelationshipCategory
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:TaskResourceRelationship ] . 

s3kl:TaskResourceRelationshipCategory_uses
      rdf:type s3kl:TaskResourceRelationshipCategory ;
      rdfs:subClassOf s3kl:TaskResourceRelationship ;
      s3kl:xsdCode "USE" .
s3kl:taskResourceRelationship_uses
      rdf:type owl:ObjectProperty , s3kl:TaskResourceRelationshipCategory_uses ;
      rdfs:subPropertyOf s3kl:taskResourceRelationship .

s3kl:TaskResourceRelationshipCategory_supervises
      rdf:type s3kl:TaskResourceRelationshipCategory ;
      rdfs:subClassOf s3kl:TaskResourceRelationship ;
      s3kl:xsdCode "ALT" .
s3kl:taskResourceRelationship_supervises
      rdf:type owl:ObjectProperty , s3kl:TaskResourceRelationshipCategory_supervises ;
      rdfs:subPropertyOf s3kl:taskResourceRelationship .

# taskRevisionChangeDescription
# - use generic s3kl:description

# taskRevisionIdentifier (Req)
s3kl:taskRevisionIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:vid ;
      rdfs:domain s3kl:TaskRevision .
s3kl:TaskRevisionIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:taskRevisionIdentifier ] .
s3kl:TaskRevisionIdentifier_REV
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:TaskRevisionIdentifier ;
      s3kl:xsdCode "REV" .
s3kl:taskRevisionIdentifier_REV
      rdf:type owl:DatatypeProperty , s3kl:TaskRevisionIdentifier_REV ;
      rdfs:subPropertyOf s3kl:taskRevisionIdentifier .

# --- page 47/ ---
# taskRevisionStatus
s3kl:TaskRevisionStatus
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:TaskRevision ] . 
s3kl:TaskRevisionStatus_approved
      rdf:type owl:Class , s3kl:TaskRevisionStatus ;
      rdfs:subClassOf s3kl:TaskRevision ;
      s3kl:xsdCode "A" .
s3kl:TaskRevisionStatus_inWork
      rdf:type owl:Class , s3kl:TaskRevisionStatus ;
      rdfs:subClassOf s3kl:TaskRevision ;
      s3kl:xsdCode "IW" .

# taskTotalLabourTime (Req)
s3kl:taskTotalLabourTime
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:TaskRevision .

# technologyBehaviourKnowledgeRating
s3kl:TechnologyBehaviourKnowledgeRating
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:DatedClassification , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:LSACandidateTechnologyBehaviourRating ] . 

# technologySensitivityRating
s3kl:TechnologySensitivityRating
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:DatedClassification , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:LSACandidateTechnologyBehaviourRating ] . 

# thresholdValue (Req)
s3kl:thresholdValue
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:property ;
      rdfs:domain s3kl:ParameterThresholdDefinition .

# timeLimitDescription (Req)
# - use generic s3kl:description

# timeLimitHarmonizationIndicator (Req)
s3kl:timeLimitHarmonizationIndicator
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:booleanProperty .

# tradeName (Req)
s3kl:TradeName
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:Trade ] . 
s3kl:TradeName_mechanic
      rdf:type owl:Class , s3kl:TradeName ;
      rdfs:subClassOf s3kl:Trade ;
      s3kl:xsdCode "M" .
s3kl:TradeName_elecrician
      rdf:type owl:Class , s3kl:TradeName ;
      rdfs:subClassOf s3kl:Trade ;
      s3kl:xsdCode "E" .

# - use generic s3kl:name

# --- page 48/ ---
# trainingMethod
s3kl:TrainingMethod
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:AdditionalTrainingRequirement ] . 
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:TrainingMethod_classroomTraining s3kl:TrainingMethod_computerBasedLearning s3kl:TrainingMethod_testAndCertificationTraining s3kl:TrainingMethod_onTheJobTraining ) .
s3kl:TrainingMethod_classroomTraining
      rdf:type owl:Class , s3kl:TrainingMethod ;
      rdfs:subClassOf s3kl:AdditionalTrainingRequirement ;
      s3kl:xsdCode "CLA" .
s3kl:TrainingMethod_computerBasedLearning
      rdf:type owl:Class , s3kl:TrainingMethod ;
      rdfs:subClassOf s3kl:AdditionalTrainingRequirement ;
      s3kl:xsdCode "CBL" .
s3kl:TrainingMethod_testAndCertificationTraining
      rdf:type owl:Class , s3kl:TrainingMethod ;
      rdfs:subClassOf s3kl:AdditionalTrainingRequirement ;
      s3kl:xsdCode "CTT" .
s3kl:TrainingMethod_onTheJobTraining
      rdf:type owl:Class , s3kl:TrainingMethod ;
      rdfs:subClassOf s3kl:AdditionalTrainingRequirement ;
      s3kl:xsdCode "OJT" .

# warningCautionNoteDescription (Req)
# - use generic s3kl:description

# warningCautionNoteIdentifier (Req)
s3kl:warningCautionNoteIdentifier
      rdf:type owl:DatatypeProperty , s3kl:IdentifierType ;
      rdfs:subPropertyOf s3kl:id ;
      rdfs:domain s3kl:WarningCautionNote .
s3kl:WarningCautionNoteIdentifier
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:IdentifierType , s3kl:ClassificationType ;
      owl:equivalentClass [ 
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subPropertyOf ; 
          owl:hasValue s3kl:warningCautionNoteIdentifier ] .

# warningCautionNoteType (Req)
s3kl:WarningCautionNoteType
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:WarningCautionNote ] . 
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:WarningCautionNoteType_Warning s3kl:WarningCautionNoteType_Caution s3kl:WarningCautionNoteType_Note ) .
s3kl:WarningCautionNoteType_Warning
      rdf:type owl:Class , s3kl:WarningCautionNoteType ;
      rdfs:subClassOf s3kl:WarningCautionNote ;
      s3kl:xsdCode "W" .
s3kl:WarningCautionNoteType_Caution
      rdf:type owl:Class , s3kl:WarningCautionNoteType ;
      rdfs:subClassOf s3kl:WarningCautionNote ;
      s3kl:xsdCode "C" .
s3kl:WarningCautionNoteType_Note
      rdf:type owl:Class , s3kl:WarningCautionNoteType ;
      rdfs:subClassOf s3kl:WarningCautionNote ;
      s3kl:xsdCode "N" .

# zoneElementDescription
# - use generic s3kl:description

# zoneElementType
s3kl:ZoneElementType
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:ZoneElement ] .
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:ZoneElementType_Zone s3kl:ZoneElementType_WorkArea ) .
s3kl:ZoneElementType_Zone
      rdf:type owl:Class , s3kl:ZoneElementType ;
      rdfs:subClassOf s3kl:ZoneElement .
s3kl:ZoneElementType_WorkArea
      rdf:type owl:Class , s3kl:ZoneElementType ;
      rdfs:subClassOf s3kl:ZoneElement .

# --- page 49/ ---
# authorizedLife
# - see s3kl:authorizedLife

# class
# classificationDate
# - Both used used for DatedClassification, define dynmaic subclasses and use s3kl:dateTimeProperty for them

# classifier
# - see URI of ClassificationTypes, and there is s3kl:xsdCode that we could use for this. 
# - LK: I don't think we need to provide another string value.

# dayComponent
# - skip

# descriptorLanguage
# - covered by the datatype rdf:PlainLiteral that allows a language tag; e.g.: "Bill"@en; see s3kl:DescriptorType

# descriptorProvidedBy
s3kl:descriptorProvidedBy                    	 
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:representationSpaceAssignedBy ;
      rdfs:domain s3kl:DescriptorType ;
      rdfs:range s3kl:Organization .
      
# descriptorProvidedDate
s3kl:descriptorProvidedDate
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:DescriptorType ;
      rdfs:subPropertyOf s3kl:dateProperty .

# descriptorText
# - see s3kl:DescriptorType & s3kl:description

# identifier
# - see s3kl:IdentifierType with s3kl:id and s3kl:vid

# --- page 50/ ---
# identifierClassifier
# - LK: not sure that this will be used at all ?

# identifierSetBy
s3kl:identifierSetBy                    	 
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:subPropertyOf s3kl:representationSpaceAssignedBy ;
      rdfs:domain s3kl:IdentifierType ;
      rdfs:range s3kl:Organization .

# lifeAuthorizingOrganization
# - see s3kl:lifeAuthorizingOrganization

# lowerLimitValue
s3kl:lowerLimitValue
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:ValueRangePropertyType ;
      rdfs:range xsd:double .

# lowerOffsetValue
s3kl:lowerOffsetValue
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:ValueWithTolerancesPropertyType ;
      rdfs:range xsd:double .

# monthComponent
# - skip

# --- page 51/ ---
# nominalValue
s3kl:nominalValue
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:ValueWithTolerancesPropertyType ;
      rdfs:range xsd:double .

# textValue
s3kl:textValue
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:TextPropertyType ;
      rdfs:range xsd:string .

# unit
s3kl:unit
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:NumericalPropertyType ;
      rdfs:range xsd:string .

# unitObject
s3kl:unitObject
      rdf:type owl:ObjectProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:NumericalPropertyType ;
      rdfs:range s3kl:Unit .

# Unit class :: all units such as metre are members of this
s3kl:Unit
	rdf:type owl:Class .

# UnitClass :: a class for all unit classes; e.g. the class LengthUnit is a member of s3kl:UnitClass and metre is a member of LengthUnit
s3kl:UnitClass 
	rdf:type owl:Class .


# upperOffsetValue
s3kl:upperOffsetValue
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:ValueWithTolerancesPropertyType ;
      rdfs:range xsd:double .

# upperLimitValue
s3kl:upperLimitValue
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:ValueRangePropertyType ;
      rdfs:range xsd:double .

# value
s3kl:value
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:SingleValuePropertyType ;
      rdfs:range xsd:double .

# valueDetermination
s3kl:ValueDeterminationCodeValues
      rdf:type owl:Class ;
      rdfs:subClassOf s3kl:ClassificationType , [
          rdf:type owl:Restriction ;
          owl:onProperty rdfs:subClassOf ; 
          owl:someValuesFrom s3kl:PropertyType ] . 
[] a owl:AllDisjointClasses;
  owl:members ( s3kl:RemarkType_comment s3kl:RemarkType_response s3kl:RemarkType_note s3kl:RemarkType_remark ) .
s3kl:ValueDeterminationCodeValues_allocatedValue
      rdf:type owl:Class , s3kl:ValueDeterminationCodeValues ;
      rdfs:subClassOf s3kl:PropertyType ;
      s3kl:xsdCode "ALC" .
s3kl:ValueDeterminationCodeValues_calculatedValue
      rdf:type owl:Class , s3kl:ValueDeterminationCodeValues ;
      rdfs:subClassOf s3kl:PropertyType ;
      s3kl:xsdCode "CALC" .
s3kl:ValueDeterminationCodeValues_contractedValue
      rdf:type owl:Class , s3kl:ValueDeterminationCodeValues ;
      rdfs:subClassOf s3kl:PropertyType ;
      s3kl:xsdCode "CONTR" .
s3kl:ValueDeterminationCodeValues_designedValue
      rdf:type owl:Class , s3kl:ValueDeterminationCodeValues ;
      rdfs:subClassOf s3kl:PropertyType ;
      s3kl:xsdCode "DSG" .
s3kl:ValueDeterminationCodeValues_empiricalValue
      rdf:type owl:Class , s3kl:ValueDeterminationCodeValues ;
      rdfs:subClassOf s3kl:PropertyType ;
      s3kl:xsdCode "EMP" .
s3kl:ValueDeterminationCodeValues_estimatedValue
      rdf:type owl:Class , s3kl:ValueDeterminationCodeValues ;
      rdfs:subClassOf s3kl:PropertyType ;
      s3kl:xsdCode "EST" .
s3kl:ValueDeterminationCodeValues_measuredValue
      rdf:type owl:Class , s3kl:ValueDeterminationCodeValues ;
      rdfs:subClassOf s3kl:PropertyType ;
      s3kl:xsdCode "MEAS" .
s3kl:ValueDeterminationCodeValues_plannedValue
      rdf:type owl:Class , s3kl:ValueDeterminationCodeValues ;
      rdfs:subClassOf s3kl:PropertyType ;
      s3kl:xsdCode "PLAN" .
s3kl:ValueDeterminationCodeValues_requirementsValue
      rdf:type owl:Class , s3kl:ValueDeterminationCodeValues ;
      rdfs:subClassOf s3kl:PropertyType ;
      s3kl:xsdCode "REQ" .
s3kl:ValueDeterminationCodeValues_setPointValue
      rdf:type owl:Class , s3kl:ValueDeterminationCodeValues ;
      rdfs:subClassOf s3kl:PropertyType ;
      s3kl:xsdCode "SET" .
s3kl:ValueDeterminationCodeValues_specifiedValue
      rdf:type owl:Class , s3kl:ValueDeterminationCodeValues ;
      rdfs:subClassOf s3kl:PropertyType ;
      s3kl:xsdCode "SPEC" .

# --- page 52/ ---
# valueRecordingDate
s3kl:valueRecordingDate
      rdf:type owl:DatatypeProperty , s3kl:PropertyS3000L ;
      rdfs:domain s3kl:PropertyType ;
      rdfs:subPropertyOf s3kl:dateTimeProperty .

# yearComponent
# - skip
