Closed swanskysong closed 9 years ago
Just to clarify, as we've been maturing the ProvONE model, we had renamed the previous DataLink class to Channel, and then after more discussion, to prov:Location, but have since realized that Channel is most appropriate. We are working on updating the model with a Channel class, however, in an effort to be as PROV-compatible as possible, are looking into subclassing prov:Communication, which looks to be the most appropriate class to model communications between Programs connected by Ports.
I've implemented the beginnings of a very basic data-flow model for programs processed with YWExtract (see the org.yesworkflow.model package) using the UML diagram of the ProvONE model at https://raw.githubusercontent.com/DataONEorg/sem-prov-ontologies/master/provenance/ProvONE/v1/uml/provone-model.png as inspiration:
A Program is a block of code with zero or more Ports. A Workflow is a Program comprising one or more other Programs whose Ports are connected (by Channels). A Channel (not named in the ProvONE UML diagram) is a connection from an (input) Port on one Program to an (output) Port on another Program.
Nesting of workflows within workflows is naturally supported, but there is no support (in the code) for viewing function calls as nested programs yet. There also is no way yet to model flow of data between different workflow nesting levels, in and out of the program as a whole, etc.