W3C home > Mailing lists > Public > public-prov-wg@w3.org > February 2012

Re: Collections in PROV-O

From: Luc Moreau <L.Moreau@ecs.soton.ac.uk>
Date: Fri, 24 Feb 2012 15:10:58 +0000
Message-ID: <EMEW3|9c3e0d077f74b28ffaa41f772fad8c85o1NFB308L.Moreau|ecs.soton.ac.uk|4F47A882.6080808@ecs.soton.ac.uk>
To: public-prov-wg@w3.org
Hi Stian,
... and how would you represent this set without literal keys then?
I don't understand what the issue is.
Luc

On 02/24/2012 03:03 PM, Paolo Missier wrote:
> 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
>>
>>
>
>

-- 
Professor Luc Moreau
Electronics and Computer Science   tel:   +44 23 8059 4487
University of Southampton          fax:   +44 23 8059 2865
Southampton SO17 1BJ               email: l.moreau@ecs.soton.ac.uk
United Kingdom                     http://www.ecs.soton.ac.uk/~lavm
Received on Friday, 24 February 2012 15:11:36 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Thursday, 26 April 2012 13:06:56 GMT