description <http://ua.be/drivetrain/description/pm#> as pm {
	uses <http://ua.be/sdo2l/vocabulary/base#> as base
	uses <http://ua.be/sdo2l/vocabulary/workflow#> as wf
	extends <http://ua.be/drivetrain/description/ftg#> as ftg

	// the car PM
	ci pm-drivetrain : wf:Workflow [
		base:hasIdentifier "pm2"
		base:hasCanonicalName "PM - Drivetrain"
		base:hasDescription "The Process model of the drivetrain."
	]


	// Artifact Usages

	ci limitations-usage : wf:WorkflowArtifact [
		base:isDefinedBy ftg:text-document-def
		base:hasUsageName "drivetrain limitations"
	]
	
	ci requirements-usage : wf:WorkflowArtifact [
		base:isDefinedBy ftg:text-document2-def
		base:hasUsageName "test requirements"
	]

	ci torque-profile-usage : wf:WorkflowArtifact [
		base:isDefinedBy ftg:profile-def
		base:hasUsageName "Matlab Torque"
	]

	ci script-usage : wf:WorkflowArtifact [
		base:isDefinedBy ftg:script-def
		base:hasUsageName "control parameter generator"
	]

	ci model-usage : wf:WorkflowArtifact [
		base:isDefinedBy ftg:model-def
		base:hasUsageName "Matlab control parameters"
	]
	
	ci code-usage : wf:WorkflowArtifact [
		base:isDefinedBy ftg:code-def
		base:hasUsageName "C-code to be run on RTT"
	]
	
	ci tabular1-usage : wf:WorkflowArtifact [
		base:isDefinedBy ftg:tabular-data-def
		base:hasUsageName "Drivetrain Sensor data"
	]
	
	ci tabular2-usage : wf:WorkflowArtifact [
		base:isDefinedBy ftg:tabular-data2-def
		base:hasUsageName "Sensor data coupling"
	]

	// Nodes

	ci init-node : wf:InitialNode [
		base:hasIdentifier "init-drivetrain-pm"
		base:hasCanonicalName "Initial Node 01"
		wf:isFollowedBy setup-profile-act
	]

	ci setup-profile-act : wf:Activity [
		base:hasIdentifier "act-dt-01"
		base:hasCanonicalName "Set up drivetrain profile"
		base:isDefinedBy ftg:setup-profile-def
		base:hasUsageName "Set up drivetrain profile"
		wf:isInputtedBy limitations-usage
		wf:isInputtedBy requirements-usage
		wf:outputs torque-profile-usage
		wf:isFollowedBy generate-control-param-act 
	]

	ci generate-control-param-act : wf:Activity [
		base:hasIdentifier "act-dt-02"
		base:hasCanonicalName "generate control parameters"
		base:isDefinedBy ftg:generate-control-parameters-def
		base:hasUsageName "Generate matlab control parameters"
		wf:isInputtedBy torque-profile-usage
		wf:isInputtedBy script-usage
		wf:outputs model-usage
		wf:isFollowedBy build-control-settings-act
	]

	ci build-control-settings-act : wf:Activity [
		base:hasIdentifier "act-dt-03"
		base:hasCanonicalName "build simulink control settings"
		base:isDefinedBy ftg:build-control-settings-def
		base:hasUsageName "Build Simulink control settings"
		wf:isInputtedBy model-usage
		wf:isInputtedBy requirements-usage
		wf:outputs code-usage
		wf:isFollowedBy run-experiment-act
	]

	ci run-experiment-act : wf:Activity [
		base:hasIdentifier "act-dt-04"
		base:hasCanonicalName "run experiement"
		base:isDefinedBy ftg:run-experiment-def
		base:hasUsageName "run experiment"
		wf:isInputtedBy code-usage
		wf:outputs tabular1-usage
		wf:outputs tabular2-usage
		wf:isFollowedBy verify-data-act
	]


	ci verify-data-act : wf:Activity [
		base:hasIdentifier "act-dt-05"
		base:hasCanonicalName "Verify sensor data"
		base:isDefinedBy ftg:verify-data-def
		base:hasUsageName "Download and store sensor data"
		wf:isInputtedBy tabular1-usage
		wf:isInputtedBy tabular2-usage
		wf:isFollowedBy setup-profile-act		
		wf:isFollowedBy final-node
	]

	ci final-node : wf:FinalNode [
		base:hasIdentifier "finalnode-dt-01"
		base:hasCanonicalName "Final Node 01"
	]

	ref ci pm-drivetrain [
		wf:coordinates init-node
		wf:coordinates setup-profile-act
		wf:coordinates generate-control-param-act
		wf:coordinates build-control-settings-act
		wf:coordinates run-experiment-act
		wf:coordinates verify-data-act
		wf:coordinates final-node
	]
	
}