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

Re: PROV-ISSUE-385 (haProvenanceIn-complexity): The hasProvenbanceIn relation is over-complicated [prov-dm]

From: Graham Klyne <graham.klyne@zoo.ox.ac.uk>
Date: Tue, 29 May 2012 18:20:31 +0100
Message-ID: <4FC5055F.20608@zoo.ox.ac.uk>
To: Luc Moreau <L.Moreau@ecs.soton.ac.uk>
CC: public-prov-wg@w3.org
On 29/05/2012 12:19, Luc Moreau wrote:
> Hi Graham
> Response sinterleaved.
> On 05/29/2012 10:53 AM, Graham Klyne wrote:
>> OK, I'm looking more closely at the examples.
>> In example 45, you introduce prov:service-uri as an attribute. If the PROV-N
>> is supposed to be a domain neutral way of representing provenance information,
>> I'm not sure that it's appropriate to introduce structures that are specific
>> to access mechanisms. To me, it feels like a layer violation and scope creep
>> in the purpose of PROV-N, as it starts to tie it to specific technology
>> (PROV-AQ in this case).
> I guess you mean PROV-DM and not the notation.

I did, though for the purposes of this discussion they're interchangeable.

> But I believe the PROV-AQ introduces properties such as prov:hasProvenance.
> If this is to be in the ontology, we also need it in other representations, and
> therefore, in the conceptual model.

I think that's a different issue.  prov:service-uri is a link relation 
introduced by PROV-AQ for accessing a provenance *service*, soemthing that I 
don't see as being in scope for description by PROV-DM or PROV-N.

As for prov:hasProvenance, I think that's what your hasprovenanceIn(...) is 
intended to reflect.  I accept the utility of that, but am arguing against 
over-complicating it with additional details which are operational artifacts of 
the web/linked data deployment environment.

(If it's causing problems, we could move prov:hasProvenance to a different 
namespace, but that feels a bit overkill to me.)

>> Example 46: looks sensible to me. I note that this makes perfect sense without
>> using the type=prov:Bundle annotation. I question whether we really need this
>> type annotation. (I think I commented on this in my review email to you.)
> I still have to respond to this separately.
> prov:Collection, prov:Plan, Prov:Dictionary, prov:Bundle are type information
> that can be inferred I believe.

OK.  I don't feel very strongly about this particular point, but as I was on one 
of my simplification crusades, I thought I'd mention it...

>> Example 47: The only justification I see in in this use-case is that "Alice
>> may have decided to use a different identifier for ex:report1". The
>> implication is that there may be some name-aliasing permitted. If this is a
>> desired feature of PROV-N, I think it should be treated separately as a first
>> class feature, not snuck in an obscure feature of prov:hasProvenanceIn.
>> Actually, I suspect that's not really what you meant. To make further progress
>> on this, I have to make an assumption (based on the appeal to PROV-AQ). In
>> PROV-AQ, a provenance link may also indicate a different target-URI from the
>> original request URI. The use case for this is when the actual resource
>> returned is a specialization of the resource requested; e.g.
>> C: GET http://example.org/weather-in-london/today
>> S: 200 OK
>> S: Link: <http://example.org/LWP-20120529>;
>> rel=prov:Provenance;
>> anchor=<http://example.org/weather-in-london/20120529>
>> If this is indeed the kind of scenario you intend to support, then I thimnk
>> the proper way to address this in example 47 would be:
>> Original (included for reference, and in case the document changed):
>> bundle alice:bundle6
>> entity(alice:report1)
>> hasProvenanceIn(alice:report1, bob:bundle4, ex:report1)
>> entity(ex:report2, [ prov:type="report", ex:version=2 ])
>> wasGeneratedBy(ex:report2, -, 2012-05-25T11:00:01)
>> wasDerivedFrom(ex:report2, alice:report1)
>> endBundle
>> Proposed revision:
>> bundle alice:bundle6
>> entity(alice:report1)
>> hasProvenanceIn(alice:report1, bob:bundle4, -)
>> specializationOf(alice:report1, ex:report1)
>> entity(ex:report2, [ prov:type="report", ex:version=2 ])
>> wasGeneratedBy(ex:report2, -, 2012-05-25T11:00:01)
>> wasDerivedFrom(ex:report2, alice:report1)
>> endBundle
> Did you really mean
> hasProvenanceIn(alice:report1, bob:bundle4, -)
> and not
> hasProvenanceIn(ex:report1, bob:bundle4, -) ?
> This is equivalent to the suggestion that Simon made in the same thread (example
> with tool rating agent performance).

Yes, I saw that later, and I agreed with Simon.

I meant to leave your hasProvenanceIn as it was, apart from dropping the target URI.

> The reason for introducing
> hasProvenanceIn(alice:report1, bob:bundle4, ex:report1)
> was that alice:report1 was a dead end in the current bundle.
> I needed to know where to go next in my incremental navigation.
> By adding,
> specializationOf(alice:report1, ex:report1)
> alice:report1 is no longer the end of the graph, but ex:report1 is.
> So how do I know where to go next?

I think it can work either way, and I think either should be allowed.  You don't 
always have to get to the *end* of the chain before accessing additional provenance.

In my approach, retrieve bob:bundle4 to access provenance about alice:report1, 
*then* use the specializationOf information to infer that provenance for 
ex:report1 is also true for alice:report1.

In your approach, use the specializationOf information to know infer that 
retrieving provenance for ex:report1 will also provide information for 
alice:report1, thus decide to retrieve information for ex:report1.

>  > The thrust of what I'm saying here is that I think it's inappropriate for
> PROV-N to just mimic PROV-AQ - they operate at different levels - but (if >using
> PROV-AQ as a motivating guide) to represent the scenarios that might be
> addressed using PROV-AQ capabilities.
> But if the information of where to go next has not been recorded somewhere in a
> provenance repository,
> how can I make use of PROV-AQ? I won't be able to indicate which
> provenance-uri/target-uri/etc to use.
> The asserter of provenance descriptions has got the possibility of recording
> such a kind of information.

See above for mechanics.

I think it's misleading to think of the PROV-DM information as telling you 
"where to go" - that's only the case when you are in the web environment and can 
use follow-your-nose techniques.  What the PROV-DM is telling you is "what to 
look for" - as in "this bundle contains provenance information about this 
entity" - coupled with specialization-based inferences like "any provenance that 
is true of this entity is also true of that entity".

>> This is what I meant when I posed the original question: "I would like to
>> understand what real scenario justifies all the added machinery that has been
>> included with this relation." Note the *real scenario* here.
> See tool rating agent performance example in the same thread.

>> Example 48:
>> I'm not sure what useful purpose is served by:
>> hasProvenanceIn(tool:r2, obs:bundle7, ex:report2)
>> This says that provenance information about tool:r2 can be found in
>> obs:bundle7 under the name ex:report2. But what *is* tool:r2 - all I can see
>> is a comment that it's a new identifier. I really can't figure what going on
>> here. What I really need to know is what is the relationship between tool:r2
>> and ex:report2.
> It's funny how we get conflicting messages here.
> Some group members were suggesting it was NOT right to reuse the same identifier
> ex:report2
> to add the viz attributes. Now, are you suggesting that I shouldn't use a
> different one?

I wasn't proposing to re-use the same identifier.   What I was saying is that if 
information about ex:report2 that also tells me about tool:r2, then there should 
be an inference that makes this explicit.

I couldn't clearly understand what your proposal was trying to do.  Treating it 
as an import mechanism was a guess, and I got it wrong.  This, to my mind, is 
indicative that the proposal is problematic.

> The point is some users will mint new identifiers, others won't, and we need to
> be able to support this.

Sure, but if we do then I think the mechanism should be explicit, but 
piggy-backed on a relation that serves a different purpose.  As it is, it's just 
confusing, which can't be a Good Thing.


>> My best guess here is that you are using the aliasing to fake a kind of bundle
>> import mechanism. If that's what you are doing, and need, I think that should
>> be addressed as a separate, comprehensible feature. This all feels a bit like
>> Jensen's device (http://en.wikipedia.org/wiki/Jensen%27s_Device) - very
>> clever, but ultimately obscure and unusable for almost all practical purposes.
> The reference to Jensen's device is simply not relevant here.
> Nowhere I suggested this is an import mechanism, though some may choose to see
> it as such, but
> PROV will not say how to merge bundles.
> Luc
>> #g
>> --
>> On 28/05/2012 21:26, Luc Moreau wrote:
>>> Hi Graham,
>>> Like PROV-AQ, we need a target.
>>> Example 47 illustrates the need for it:
>>> hasProvenanceIn(alice:report1, bob:bundle4, ex:report1)
>>> In the current bundle, there is a description for alice:report1.
>>> More provenance can be found for it in bundle bob:bundle4, under the name
>>> ex:report1.
>>> The presence of attributes and id follow the pattern of other qualified
>>> relations.
>>> Luc
>>> On 28/05/12 20:01, Provenance Working Group Issue Tracker wrote:
>>>> PROV-ISSUE-385 (haProvenanceIn-complexity): The hasProvenbanceIn relation is
>>>> over-complicated [prov-dm]
>>>> http://www.w3.org/2011/prov/track/issues/385
>>>> Raised by: Graham Klyne
>>>> On product: prov-dm
>>>> I'm raising this issue as a placeholder and for discussion. I didn't notice
>>>> the arrival of prov:hasProvenanceIn, but based on its appearance in
>>>> http://dvcs.w3.org/hg/prov/raw-file/default/model/releases/ED-prov-dm-20120525/prov-dm.html
>>>> (which AFAIK is not a currently active draft, but a proposal) is rather
>>>> over-complicated and a bit obscure.
>>>> My sense is that, especially as this is motivated by PROV-AQ, there are just
>>>> too many identifiers floating around.
>>>> Instead of:
>>>> hasProvenanceIn(id, subject, bundle, target, attrs)
>>>> Why not just:
>>>> hasProvenanceIn(subject, bundle)
>>>> Where subject is based on the URI of an entity, and bundle is based on the URI
>>>> of a provenance bundle with information about that entity.
>>>> I would like to understand what real scenario justifies all the added
>>>> machinery that has been included with this relation.
Received on Tuesday, 29 May 2012 17:34:23 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 16:51:14 UTC