## 2 Materials and Methods
### Concepts and Terminology  
AI4 PD consists of four central concepts, namely, _People, Process, Method_ and _Application_, which are specified and generalised following the middle-out approach [37]. Further, the _CamelCase_ notation is used for labelling of AI4 PD concepts, where _AI4 PD_ is used as a prefix for the Internationalized Resource Identifier (IRI). The core of AI4 PD is a quartet, as shown in Figure 5, with the _TaskCluster_ bridging the gap between _Process_ and _Method_ as well as _Data_ linking _Process_ and _Application_. A _ProductDevelopmentProcess_ has several phases and milestone goals, which are structured as _SubProcesses_ and with a _Team_ working on them. A formal definition of the _ProductDevelopmentProcess_ can be given by  
\[ProductDevelopmentProcess \sqsubseteq \geq 1\textit{hasSubprocess.SubProcess}\] \[\sqsubseteq = 1\textit{doneBy.Team}\]  
A _SubProcess_ can be decomposed down to two or more other _SubProcesses_ or _Tasks_. Each _SubProcess_ has defined input and output _Data_ and a defined _Team_, or--in the case of a _Task_--a defined _Person_ works on it. Furthermore, a _Subprocess_ is part of one defined _TaskCluster_. The AI4 PD concept _SubProcess_ is formally defined as  
\[SubProcess \sqsubseteq = 1\textit{hasTask.Task}\vee\exists\textit{hasSubprocess.SubProcess}\] \[\sqsubseteq \geq 1\textit{generatesData.Data}\] \[\sqsubseteq \geq 1\textit{UsesData.Data}\] \[\sqsubseteq = 1\textit{isPartOf}\textit{Process.ProductDevelopmentProcess}\] \[\sqsubseteq = 1\textit{isPartOf}\textit{TaskCluster}\] \[\sqsubseteq = 1\textit{doneBy.Team}\vee 1\textit{doneBy.Person}\]Subprocesses can be broken down into _Tasks_, which also require formal definitions, with a _Task_ being the smallest possible indivisible unit. A _Task_ is part of exactly one _SubProcess_ and can use or generate the same _Data_ as the _SubProcess_. Furthermore, every _Task_ can be seen as an incremental _SubProcess_. Furthermore, to connect AI4 PD to the generic PROV Ontology [35], the ai4 pd:task class is set as equivalent to the prov:Activity class. \[ \begin{array}{l}\textit{Task}\sqsubseteq&=1\textit{isPartOfProcess}.\textit{SubProcess}\\ &\sqsubseteq&\exists\textit{generatesData}.\textit{Data}\\ &\sqsubseteq&\exists\textit{UsesData}.\textit{Data}\\ &\equiv&\textit{prov}:\textit{Activity}\\ \end{array} \]  
Every company has individual process details, which makes it challenging to give general statements about applicable methods to specific tasks or subprocesses. Therefore, the concept of _TaskCluster_ is introduced. Examples for these clusters are given in Section 3.1. These _TaskClusters_ allow a generalisation of individual and company-specific process definitions regarding inputs, outputs and used systems. The cluster focuses on the overall goal (e.g., transforming an input, such as requirements, to an output, such as a CAD-Model, or using a CAD-Model to create a FEM result). The work result (e.g., the individual FEM result) is abstracted during the cluster formation. Since iterations and error corrections represent loops back to process steps that have already been performed, they are not recorded separately as clusters. _TaskClusters_ have defined input and output data. They are used in abstract data types such as _ASCIIData_ or _EngineeringData_ rather than explicit data types. Furthermore, task clusters use a particular type of program. In distinction to Digital Engineering tools, the term program refers to CAD programs, office programs, etc. Figure 5: Core concepts (yellow diamond) and relationships (blue arrows) of AI4 PD. Furthermore, a _TaskCluster_ can use a specific _DataDrivenTask_. The following axiom describes a _TaskCluster_ in consideration of the definitions above:  
\[\exists hasInput.Data\cap\exists hasOutput.Data\cap\exists use. Tool\] \[\cap use.Data DrivenTask\sqsupseteq TaskCluster\]  
A product development _Team_ consists of several team members, each with expertise and qualifications. Additionally, a team works on one or more _ProductDevelopmentProcess_ at a time.