Q: How do I Model a Process using EDG?

16 views
Skip to first unread message

Tim Smith

unread,
May 11, 2020, 6:50:40 PM5/11/20
to topbrai...@googlegroups.com
Hi,

I am attempting to use EDG Ontologies to model a basic manufacturing process as an instance of an Enterprise Assets collection.  Is there an example of how to model a process in EDG?  I am not finding the current ontologies to be sufficient without adding some property shapes.  For example, Process is defined in Core as 

"A pocess, or business process, is a collection of activities performed by actors (people or machines) that in a specific sequence produces information assets. Serving specific business goals, business processes make up business capabilities."

Process can have Process Activities or sub-Processes and a number of  inherited properties including performedBy (which can only be a Party, not a machine).  The definition says that a process is an ordered set of activities...

So if I have a big process named "Parent Process" with three major steps within (Step1, Step2, Step3), and Step3 has two steps inside, Step3a, Step3b.  How do I model this?

Is Parent Process an instance of Process?

Are Steps 1-3 Processes or Process Activities?.  Note that there is no ability (i.e. no property shape) to specify order of execution at the Process level.  Only Process Activities make use of edg:successor.  Processes can have activities or sub-processes.  I think of the Steps as instances of Processes to be included as "edg:subProcess"(es). 

Based on the answers above, Steps 3a and 3b will be Processes or Process Activities.

As a test, because edg:successor is only attached to Process Activities, I made all Steps Process Activity instances and Parent Process a Process instance.  I included Step1-3 as edg:activity(ies) in the Process.  I created the execution order between the Steps using edg:successor.  I also made Step3a-b as edg:subactivity(ies) of Step3 with Step3a edg:successor Step3b.

However, this leaves open three questions:
1.  What predicate do I use to specify the first step in Parent Process?
2.  What predicate do I use to specify that Step3a is the first subActivity in Step3?
3.  Is there a better way to model this?

One of my goals is to be able to visualize the ordered steps in the process by using either a LineageGram or a NeighborGram.  Without having a starting point per the questions above, it is not possible to achieve this visual.  The NeighborGram output is shown below.  Since I know Step1 is first, I manually expanded the graph using only edg:successor (by selecting the Step1 node, clicking on Transitive and deselecting the activity and type properties.)  Notice that when I get to Step3, edg:subActivity also appears.  Is this supposed to happen?


image.png

I'm hoping there is an example that will clear up some of my questions as I don't want to add a lot of property shapes to EDG classes.  It's probably safer to create a new Process ontology in that case.

Thanks for your input,

Tim

PS:  I was planning to include a turtle export of the example graph but I receive a SPARQLMotion error when exporting as anything but Trig so that will have to wait.

PPS:  I noticed that when I search for Process in the Assets tab, I do not see the Process class as a result.  However, it is clearly in the class tree.  Any idea why it does not show up?

image.png

Sjoerd Rongen

unread,
May 12, 2020, 8:07:28 AM5/12/20
to TopBraid Suite Users

Hi Tim,

I think it would be difficult to have a different class for different levels of process steps. Manufacturing processes usually consist of a varying number of sub processes and depending on who you ask there are more or less processes to model.

Would it not be possible to have a class 'ProcessStep', which is a rdf:subClassOf itself?
That way you can have instances of a process step with all the attributes of a process step for every subprocess. The overall parent process would then be recognized by it not being the subclass of any other process. This subclass relation represents the conceptual grouping of manufacturing steps.
Another relation can be used to model which process comes after this process. Representing the fysical manufacturing process a product goes through. This relationship could indicate that step 1 takes place before step 2, which takes place before step 3. The subclasses of step 3 (3a and 3b) also have a relation between them to indicate 3b follows 3a.

I hope I've been able to help you a little
Regards,
Sjoerd


dprice

unread,
May 12, 2020, 9:00:32 AM5/12/20
to topbrai...@googlegroups.com
First, I’ve not used that part of EDG so cannot really answer the details but here are a few thoughts.

On 12 May 2020, at 13:07, Sjoerd Rongen <sjoerd...@gmail.com> wrote:


Hi Tim,

I think it would be difficult to have a different class for different levels of process steps.

While you can see some logic to not doing so, many standards/tools for process modelling do exactly that. I understand that part of the rationale is that there are different constraints/relations/properties depending on the level of abstraction/detail. For example, a class at a lower level of abstraction might be where things can have an actual human assigned to perform them whereas that relation does not make sense at the higher levels of abstractions/aggregation. I’ve seen the class breakdown be Process/Activity/Task, for example. 

From Wikipedia on BPMN:

Task
A task represents a single unit of work that is not or cannot be broken down to a further level of business process detail. It is referred to as an atomic activity. A task is the lowest level activity illustrated on a process diagram. A set of tasks may represent a high-level procedure. 
Sub-process
Used to hide or reveal additional levels of business process detail. When collapsed, a sub-process is indicated by a plus sign against the bottom line of the rectangle; when expanded, the rounded rectangle expands to show all flow objects, connecting objects, and artifacts. A sub-process is referred to as a compound activity.

FWIW the edg:ProcessActivity says:

A Process Acrtivity corresponds to a 'Business Process Modeling (BPM)' notiion of activity, and is distinguished from a Business Activity.

Manufacturing processes usually consist of a varying number of sub processes and depending on who you ask there are more or less processes to model.

Yep - similar issue wrt Assembly vs Part in Mfg, but you see that distinction made in data models too for similar reasons even though an assembly to one org is a part to another.


Would it not be possible to have a class 'ProcessStep', which is a rdf:subClassOf itself?
That way you can have instances of a process step with all the attributes of a process step for every subprocess. The overall parent process would then be recognized by it not being the subclass of any other process. This subclass relation represents the conceptual grouping of manufacturing steps.

Subclass does not mean that, so please don’t do that in EDG. I think you really mean something like isSubProcessOf here, not subClassOf.

Another relation can be used to model which process comes after this process. Representing the fysical manufacturing process a product goes through. This relationship could indicate that step 1 takes place before step 2, which takes place before step 3. The subclasses of step 3 (3a and 3b) also have a relation between them to indicate 3b follows 3a.

I hope I've been able to help you a little

WRT the questions:

However, this leaves open three questions:
1.  What predicate do I use to specify the first step in Parent Process?
2.  What predicate do I use to specify that Step3a is the first subActivity in Step3?
3.  Is there a better way to model this?

It seems that 1 and 2  are likely the same question really. 

FWIW there is a class-based approach: Some process/activity data models have an explicit “Start” activity which is always the first, and some also have an explicit “End” too. I think UML does that. 

Not ideal, but seems that “first” property could be derived as “the subProcess that has no successor referencing it” - probably better to extend EDG if you find you need a property to store but then the question is where does that property belong? Not sure if that’s better than the explicit Start or not.

WRT 3 I guess that depends on if you need to interoperate with anyone? Do you need to explain this to others outside your organisation who use EDG or use some other tool? Does your organisation already use some other data model for activity models with which you need to align? Is this just an experiment?

FWIW it is a design feature or EDG that it is relatively easy to extend the data model, so feel free to extend in areas where you find gaps and also please report that as a feature request for a future release of EDG. 

Me too :-)

Cheers,
David

Regards,
Sjoerd



--
You received this message because you are subscribed to the Google Groups "TopBraid Suite Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to topbraid-user...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/topbraid-users/2db4c384-cef6-4013-8bbc-a5328a90bb6c%40googlegroups.com.


Reply all
Reply to author
Forward
0 new messages