- From: Paolo Missier <Paolo.Missier@ncl.ac.uk>
- Date: Fri, 24 Feb 2012 15:03:22 +0000
- To: Stian Soiland-Reyes <soiland-reyes@cs.manchester.ac.uk>
- CC: Paolo Missier <paolo.missier@newcastle.ac.uk>, Jun Zhao <jun.zhao@zoo.ox.ac.uk>, "public-prov-wg@w3.org" <public-prov-wg@w3.org>
Stian agreed on making this an issue and discussing it further. Thank you for elucidating the "impossible" cases, that's what I meant with "and think through how it plays out with the current state update framework" :-). On this point: >> BTW 1: I don't see why having literal keys is a problem. I may be missing >> it. Nesting is accommodated by having values which are Entities (of type >> prov:Collection). > How would you represent this set of set of empty sets (ugh!) using literal keys? > > A = { > { {}, {} } > { {} } > { } > } I think you have just taken the notion of "corner cases" to a whole new level :-) --Paolo On 2/24/12 9:56 AM, Stian Soiland-Reyes wrote: > On Thu, Feb 23, 2012 at 15:59, Paolo Missier<Paolo.Missier@ncl.ac.uk> wrote: >> But Stian's rendering is not valid exactly because he is ab-using the >> insertion mechanism by omitting the key. To me this is "scruffy". I could do > Yes, this is very scruffy. It is like saying X was generated by an > activity which used Y, but without identifying the activity. That's a > 'power' of RDF if you like, which would not be easily be mapped to > PROV-DM (unless we introduce an anonymous _ prefix, like in Turtle) > > >> Either we introduce an extra relation for containment (and think through how >> it plays out with the current state update framework), or we use the current >> framework "properly". The framework states that the only way you can >> /achieve/ containment of A into B is by asserting that A was added to B. >> Containment is a consequence of this. > But Jun might not know when A was added to B, she just observed that B > (that perhaps came out of a workflow activity) contained A - and > perhaps later she used A - and so we want to have a trace to say where > A came from. You can just say that A was derived from B (through a > get-from-collection kind of activity) - but that's not very > transparent. > > I can see two problems with allowing asserting of collection members: > > a) Users could say "impossible" things such as: > A contained { (a,1), (b,2) } > B was made by adding (c,3) to A > B contained { (b,2), (d,4) }. > > b) In an open world assumption it might be hard to assert that the > members of A was x,y,z and nothing else. Other times one might > actually want to say it contained x,y,z AND possibly something else > (unknown). See RDF collections and the problem of 'closing' a list. > [2] > > > We should make collection member containment an issue/request. > > Jun - could you write it as an issue in the tracker and give a simple > usecase for when one would want to state containment? > > > >> BTW 1: I don't see why having literal keys is a problem. I may be missing >> it. Nesting is accommodated by having values which are Entities (of type >> prov:Collection). > How would you represent this set of set of empty sets (ugh!) using literal keys? > > A = { > { {}, {} } > { {} } > { } > } > > You have to make up some keys. (I did the inner set members be empty > sets instead of literals {a,b,c} so you can't be tempted to say "We'll > call the first key "a_b_c" etc :) ) > > Two asserters of provenance about modifications to this set could > generate totally different keys. > > If you use entities as keys, it's easy, as you just use the value as > the key. For bags (unordered, allows duplicates) you still have a > problem, and would probably have to resort to fresh random-id-assigned > entity for every key. RDF containers [1] uses rdf:_n for this purpose, > for instance > :bag rdf:_5 :fifth . > (even if the bag is unordered) > > >> BTW 2: when did prov:Container start to be used for collections? > Sorry, I obviously meant prov:Collection :) > > [1] http://www.w3.org/TR/rdf-primer/#containers > [2] http://www.w3.org/TR/rdf-primer/#collections > > -- ----------- ~oo~ -------------- Paolo Missier - Paolo.Missier@newcastle.ac.uk, pmissier@acm.org School of Computing Science, Newcastle University, UK http://www.cs.ncl.ac.uk/people/Paolo.Missier
Received on Friday, 24 February 2012 15:03:54 UTC