- From: Graham Klyne <GK@ninebynine.org>
- Date: Thu, 09 Aug 2012 15:20:04 +0100
- To: public-prov-comments@w3.org
The PROV-DM and related documents have progressed to last call with "mention" and related features marked "at risk" if they are problematic. Based on my review of material in the last call drafts, I claim they are problematic in the sense that they are confusing and superfluous. I don't oppose the principle of being able to describe provenance across a number of accounts (bundles, contexts), but I think the current specifications don't do this adequately and that the work to describe contextualized provenance should be deferred so that it can be aligned with ongoing W3C work on RDF datasets and their semantics. I am concerned that attempting premature standardization of features for expressing contextualized provenance, which do not sit easily with the (current) RDF specifications, may lead to deployments with divergent semantics. Something similar happened with RDF reification based on the original 1999 RDF recommendation, and it remains a feature of RDF that is little-used, despite its intended purpose being recognized as responding to significant needs. I see a significant risk that "mention" will suffer the same fate. What follows is my analysis of the current specification relating to "mention", and why I think it should be dropped. ... Ref: http://www.w3.org/TR/2012/WD-prov-dm-20120724/ (PROV-DM) Starting with http://www.w3.org/TR/2012/WD-prov-dm-20120724/#term-mention: [[ A mention ◊ relation, written mentionOf(infra, supra, b) in PROV-N, has: • specificEntity: an identifier (infra) of the entity that is a mention of the general entity (supra); • generalEntity: an identifier (supra) of the entity that is being mentioned. • bundle: an identifier (b) of a bundle that contains a description of supra and further constitutes one additional aspect presented by infra. An entity is interpreted with respect to a bundle's description in a domain specific manner. The mention of this entity with respect to this bundle offers the opportunity to specialize it according to some domain-specific interpretation. A mention of an entity in a bundle results in a specialization of this entity with extra fixed aspects, including the bundle that it is described in. ]] The description "is interpreted with respect to a bundle's description in a domain specific manner" is not the stuff of interoperable specifications. To my mind, it invites non-interoperable use. I can't find a clear description in the document of what is meant by "fixed aspects". I understand the intent is that these "fixed aspects" are represented as entity attributes (the definition of Entity should clarify this if the notion is to be used in other definitions - but I note that mentionOf is the only place in PROV-DM that uses the notion). For the purpose of what follows, I shall assume an attribute "mentionedIn" to represent this additional "fixed aspect". As defined, I can't see what is claimed by: [[ mentionOf(infra, supra, b) ]] that would not also be claimed by asserting: [[ specializationOf(infra, supra) entity(infra, [mentionedIn=b]) ]] or just: [[ specializationOf(infra, supra) bundle b entity(supra) ... endbundle ]] Looking at Example 46, it seems to me that the "mentionOf" expressions can be replaced by "speclializationOf" without loss of expressed information or functionality, so in this use "mentionOf" is superfluous. Example 45 is more involved, but I believe that here too the intended meaning can be captured without "mentionOf": [[ bundle ex:run1 activity(ex:a1, 2011-11-16T16:00:00, 2011-11-16T17:00:00) //duration: 1hour wasAssociatedWith(ex:a1, ex:Bob, [prov:role="controller"]) endBundle bundle ex:run2 activity(ex:a2, 2011-11-17T10:00:00, 2011-11-17T17:00:00) //duration: 7hours wasAssociatedWith(ex:a2, ex:Bob, [prov:role="controller"]) endBundle bundle tool:analysis01 agent(tool:Bob-2011-11-16, [perf:rating="good"]) mentionOf(tool:Bob-2011-11-16, ex:Bob, ex:run1) agent(tool:Bob-2011-11-17, [perf:rating="bad"]) mentionOf(tool:Bob-2011-11-17, ex:Bob, ex:run2) endBundle ]] In this case, I think the intended meaning is captured by the following: [[ bundle ex:run1 activity(ex:a1, 2011-11-16T16:00:00, 2011-11-16T17:00:00) //duration: 1hour wasAssociatedWith(ex:a1, ex:Bob, [prov:role="controller"]) endBundle bundle ex:run2 activity(ex:a2, 2011-11-17T10:00:00, 2011-11-17T17:00:00) //duration: 7hours wasAssociatedWith(ex:a2, ex:Bob, [prov:role="controller"]) endBundle bundle tool:analysis01 agent(tool:Bob-2011-11-16, [perf:rating="good"]) specializationOf(tool:Bob-2011-11-16, ex:Bob) wasAssociatedWith(ex:a1, tool:Bob-2011-11-16, [prov:role="controller"]) agent(tool:Bob-2011-11-17, [perf:rating="bad"]) specializationOf(tool:Bob-2011-11-17, ex:Bob) wasAssociatedWith(ex:a2, tool:Bob-2011-11-17, [prov:role="controller"]) endBundle ]] If any deeper meaning is intended it is not conveyed by either the definition or the example, so at best I think the "mentionOf" construct is superfluous, and at worst it is confusing and liable to lead to divergent implementations and interpretation. ... Ref: http://www.w3.org/TR/2012/WD-prov-o-20120724/ (PROV-O) I also looked at how "mention" is realized in RDF though PROV-O http://www.w3.org/TR/2012/WD-prov-o-20120724/#mentionOf: The definition text is pretty much a recapitulation of words from PROV-DM ("... another Entity that is a specialization of the former and that presents the Bundle as a further additional aspect."), and the example given describes a structure that cannot (currently) be expressed in RDF: [[ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . @prefix owl: <http://www.w3.org/2002/07/owl#> . @prefix prov: <http://www.w3.org/ns/prov#> . @prefix tool: <http://example.com/tool/> . @prefix perf: <http://example.com/performance/> . @prefix : <http://example.com/> . :run2 { :activity_2 a prov:Activity; prov:startedAtTime "2011-11-17T10:00:00"^^xsd:dateTime; prov:endedAtTime "2011-11-17T17:00:00"^^xsd:dateTime; prov:wasAssociatedWith :bob; . } tool:analysis_01 { tool:bob-2011-11-17 a prov:Agent; prov:mentionOf :bob; prov:asInBundle :run2; perf:rating perf:very-slow; . } # This is inferred from prov:mentionOf tool:bob-2011-11-17 prov:specializationOf :bob . # This is inferred from prov:specializationOf tool:bob-2011-11-17 prov:alternateOf :bob . ]] In this example, it seems to me that "prov:mentionOf" could be replaced by "prov:specializationOf", since that's the only thing that is inferred from "prov:mentionOf". So my best guess is that "prov:mentionOf" is superfluous here, since it expresses nothing that is not expressed by "prov:specializationOf", and the "prov:asInBundle" seems to correspond most closely to an attribute on the entity described (cf. "mentionedIn" that I posit above). ... The text in these last-call documents was the subject of much discussion by the working group (cf. http://www.w3.org/2011/prov/track/issues/385, where the term used for this feature was originally "prov:hasProvenanceIn"). I take the fact that the text still does not provide a clear indication of what the construct is intended to convey (distinct from "prov:specializationOf") is an indication that the concept itself is problematic. #g --
Received on Thursday, 9 August 2012 14:22:17 UTC