<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="xsl-for-template-specification.xsl"?>
<TemplateSpecification xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xml-schema-for-template-specification.xsd">
	<TemplateName>ClassOfIntendedRoleAnd DomainDefinition</TemplateName>
	<defaultRdsId>ACD30FA6FEDF42A9A4ECAAC54827FAED</defaultRdsId>
	<Status>NEW 22AUG2023</Status>
	<TIPPredicate>coIntendedForUseAs</TIPPredicate>
	<Description>Members of a ClassOfIndividual are intended to play the Role of members of another ClassOfIndividual, with Cardinalities.</Description>
	<Example>Members of a Pump, offered by Bloggs Ltd, are intended to be used for members of Asset Requirements Class CO-P-101</Example>
	<Notes>At instantiation of this template it is mandatory to add meta:valEffectiveDate with the dateTime that the represented information became effective.</Notes>
	<SubClassOf>TemplateForDefinitionOfClass</SubClassOf>
	<Definition>The [hasDefined] is defined such that [hasCardinalityOfPlayerType] member(s) of [hasPlayerType] have [hasCardinalityOfPlayed] member(s) of [EssentialType] class [hasPlayedType] as participant in a [hasPlayedRole] Role</Definition>
	<ScopeNote><![CDATA[[1] The [hasDefined] is used to classify the IntendedRoleAndDomain relationship  at Individual level. [2] Although In ISO 15926 the cardinalities are the opposite of the customary cardinality, they have been defined here in that customary manner in the template signature (by reversing end1Cardinality and end2Cardinality).]]></ScopeNote>
	<AdminNote/>
	<LiftedAndLoweredGraph>CL-DEFN-900-20220822.png</LiftedAndLoweredGraph>
	<LiftedTemplate>
	    	<LiftedTemplateElements>
			<Ref>1</Ref>
	    		<URI>dm:ClassOfIndividual</URI>
	    	</LiftedTemplateElements>
		<LiftedTemplateElements>
			<Ref>2</Ref>
	    		<URI>dm:ClassOfIndividual</URI>
		</LiftedTemplateElements>
		<LiftedTemplateElements>
			<Ref>3</Ref>
			<URI>dm:Role</URI>
		</LiftedTemplateElements>
		<LiftedTemplateElements>
			<Ref>4</Ref>
			<URI>dm:ClassOfIntendedRoleAndDomain</URI>
		</LiftedTemplateElements>
		<LiftedTemplateElements>
			<Ref>5</Ref>
			<URI>dm:Cardinality</URI>
	    	</LiftedTemplateElements>
		<LiftedTemplateElements>
			<Ref>6</Ref>
			<URI>dm:Cardinality</URI>
			</LiftedTemplateElements>
		<LiftedTemplateElements>
			<Ref>7</Ref>
			<URI>dm:ClassOfTemporalWholePart</URI>
		</LiftedTemplateElements>
			<LiftedTemplateElements><Ref>8</Ref>
	    		<URI>dm:ClassOfIndividual</URI>
	    	</LiftedTemplateElements>
		<LiftedTemplateElements>
			<Ref>9</Ref>
			<URI>dm:RoleAndDomain</URI>
		</LiftedTemplateElements>
		<LiftedTemplateElements>
			<Ref>10</Ref>
			<URI>dm:ClassOfTemporalWholePart</URI>
		</LiftedTemplateElements>
		<LiftedTemplateElements>
			<Ref>11</Ref>
	    		<URI>dm:ClassOfIndividual</URI>
		</LiftedTemplateElements>
		<LiftedTemplateElements>
			<Ref>12</Ref>
			<URI>dm:SpecializationByDomain</URI>
		</LiftedTemplateElements>
		<LiftedTemplateElements>
			<Ref>13</Ref>
			<URI>dm:SpecializationByRole</URI>
		</LiftedTemplateElements>
	</LiftedTemplate>
	<PropertiesOfLoweredTemplate>
  	<TemplateSignature>
		<RoleNo>1</RoleNo>
		<RoleName>hasPlayerType</RoleName>
		<RoleObjectType>dm:ClassOfIndividual</RoleObjectType>
		<RoleExample/>
	</TemplateSignature>
	<TemplateSignature>
		<RoleNo>2</RoleNo>
		<RoleName>hasPlayedType</RoleName>
		<RoleObjectType>dm:ClassOfIndividual</RoleObjectType>
		<RoleExample/>
	</TemplateSignature>
	<TemplateSignature>
		<RoleNo>3</RoleNo>
		<RoleName>hasPlayedRole</RoleName>
		<RoleObjectType>dm:Role</RoleObjectType>
		<RoleExample>use ID from RDL</RoleExample>
	</TemplateSignature>
	<TemplateSignature>
		<RoleNo>4</RoleNo>
		<RoleName>hasDefined</RoleName>
		<RoleObjectType>dm:ClassOfIntendedRoleAndDomain</RoleObjectType>
		<RoleExample>generate UUID or RDL number for typing of IntendedRoleAndDomain relationship in template for individual</RoleExample>
	</TemplateSignature>
	<TemplateSignature>
		<RoleNo>5</RoleNo>
		<RoleName>hasCardinalityOfPlayerType</RoleName>
		<RoleObjectType>dm:Cardinality</RoleObjectType>
		<RoleExample></RoleExample>
	</TemplateSignature>
	<TemplateSignature>
		<RoleNo>6</RoleNo>
		<RoleName>hasCardinalityOfPPlayedType</RoleName>
		<RoleObjectType>dm:Cardinality</RoleObjectType>
		<RoleExample></RoleExample>
	</TemplateSignature>
	</PropertiesOfLoweredTemplate>
	<LoweredTemplateOWLcode>
    		<![CDATA[
		]]>
 	 </LoweredTemplateOWLcode>
	<LoweredTemplateFOLcode><![CDATA[ClassOfIntendedRoleAndDomainDefinition(hasPlayerType, hasPlayedType, hasPlayedRole, hasDefined, hasCardinalityOfPlayerType, hasCardinalityOfPlayedType) <->
ClassOfIndividual(hasPlayerType) & 
ClassOfIndividual(hasPlayedType) & 
Role(hasPlayedRole) &
Cardinality(hasCardinalityOfPlayerType) &
Cardinality(hasCardinalityOfPlayedType) &
exists u1 exists u2 exists u3(
      ClassOfTemporalWholePartTemplate(u1, hasPlayerType) &
      ClassOfIndividual(u1) &
      RoleAndDomain(u2)
      ClassOfTemporalWholePartTemplate(u3, hasPlayedType) &
      ClassOfIndividual(u3) &
      SpecializationByDomainTemplate(u2, u3) &
      SpecializationByRoleTemplate(u2, hasPlayedRole) &
      ClassOfIntendedRoleAndDomainTriple(hasDefined, u1, u2) &
          hasEnd1Cardinality(hasDefined, hasCardinalityOfPlayedType) &
          hasEnd2Cardinality(hasDefined, hasCardinalityOfPlayerType)) .]]>
	</LoweredTemplateFOLcode>

	<LoweredTemplateInstanceListing>
<![CDATA[GENERIC DEFINITION

 tpl:ClassOfIntendedRoleAndDomainDefinition
      rdfs:subClassOf dm:Template ;
      rdfs:isDefinedBy  tpl:CL-DEFN-900.xml ;
      tpl:hasPlayerType dm:ClassOfIndividual ;
      tpl:hasPlayedType dm:ClassOfIndividual ;
      tpl:hasPlayedRole dm:Role ;
      tpl:hasDefined dm:ClassOfIntendedRoleAndDomain ; # auto-generated
      tpl:hasCardinalityOfPlayedType dm:Cardinality ;
      tpl:hasCardinalityOfPlayerType dm:Cardinality ;
      meta:valEffectiveDate xsd:dateTime .

# EXAMPLE - Members of a Pump class in a quotation by Bloggs Ltd are intended to play the Role of REQUIRED OBJECT of members of Requirement Class CO-P-101.

ex:4c1184b8-7220-455d-b91c-67760d36b459
      rdf:type tpl:ClassOfIntendedRoleAndDomainDefinition ;
      tpl:hasPlayerType ex:a61410ca-7d4b-441d-aa44-0e87fc791c3b ; # Pump class in a quotation by Bloggs Ltd
      tpl:hasPlayedType ex:3d3f9d2e-d61d-4da5-9469-445f7addb5eb ; # Requirement Class CO-P-101
      tpl:hasPlayedRole rdl:RDS2225807 ; # REQUIRED OBJECT
      tpl:hasDefined ex:c9d7575a-3f7f-4b05-bba8-587aa253205a ; # auto-generated
      tpl:hasCardinalityOfPlayedType rdl:RDS999900701  ; # ONE TO MANY
      tpl:hasCardinalityOfPlayerType rdl:RDS999900701  ; # ONE TO MANY
      meta:valEffectiveDate "2022-11-17T15:23:56Z"^^xsd:dateTime .
]]>
</LoweredTemplateInstanceListing>
</TemplateSpecification>
