The most important parts of the KG are the description of the machines, especially the ones identified as [itm:bosch-apas](https://ci.mines-stetienne.fr/kg8/itmfactory/bosch-apas), [itm:dx10](https://ci.mines-stetienne.fr/kg8/itmfactory/dx10), [itm:vl10](https://ci.mines-stetienne.fr/kg8/itmfactory/vl10), and [itm:xy10](https://ci.mines-stetienne.fr/kg8/itmfactory/xy10).
The most important parts of the KG are the description of the machines, especially the ones identified as [itm:bosch-apas](https://ci.mines-stetienne.fr/kg/itmfactory/bosch-apas), [itm:dx10](https://ci.mines-stetienne.fr/kg/itmfactory/dx10), [itm:vl10](https://ci.mines-stetienne.fr/kg/itmfactory/vl10), and [itm:xy10](https://ci.mines-stetienne.fr/kg/itmfactory/xy10).
These machines are identified as td:Thing and their description contains the interfaces for their property affordances and action affordances (what they can "tell" and what they can "do"). For each affordance, we provide a td:name that helps identifying what the affordance serves for. An affordance has a form (td:hasForm) which is itself composed of several characteristics: a target (hctl:hasTarget) that identifies what resource must be queried, and what is the content type of the payload for the request (hctl:forContentTYpe). Each affordance have a type, usually defined in our custom ontology. These types of affordance can be used to find mutiple affordances that serves a similar purpose. For instance, onto:ActivityStatus correspond to a type of affordance that provides a status about a certain action. This way, it is not always necessary to know the name (td:name) of an affordance to find it and use it. Some affordances require a certain JSON schema, which is documented using the js: vocabulary.
...
...
@@ -28,3 +23,5 @@ Some machines have multiple affordances of the same type (because they achieve t
In addition, each machine may have a location where material that must be used should be put (onto:locationOfInputMaterial), and a location where the final product will be placed (onto:locationOfProduct). For instance, the filling machine (itm:dx10) has a location at one end of its conveyor belt where the empty cups are placed; it has a location at the other end of the conveyor belt where the full cups arrive. These locations are given with 3 coordinates (onto:coordX, onto:coordY, onto:coordZ). This way, it is possible to find in the knowledge graph the relevant location where the robotic arm has to move and take cups.
Moreover, the location of input material or the location of product are features of interest that may be observed by sensors, for instance, to detect the presence of a cup and start the filling process, or detect multiple a cup at the location of product so as to stop the filling machine and avoid accumulation of products at the end of the conveyor belt, etc.