- From: Stian Soiland-Reyes <soiland-reyes@cs.manchester.ac.uk>
- Date: Wed, 6 Jun 2012 16:54:50 +0100
- To: Timothy Lebo <lebot@rpi.edu>
- Cc: Luc Moreau <L.Moreau@ecs.soton.ac.uk>, "public-prov-wg@w3.org WG" <public-prov-wg@w3.org>
On Wed, Jun 6, 2012 at 3:57 PM, Timothy Lebo <lebot@rpi.edu> wrote:
> EmptyCollection remains in the latest PROV-O (so that is not an issue).
puh! ;-)
> Would this use case be handled if Taverna instead leveraged the "additional
> attributes" that DM already provides?
>
> memberOf(id; c, {(key_1, e_1), ..., (key_n, e_n)}, cplt, attrs)
>
> perhaps a property taverna:isComplete or class taverna:CompleteDictionary ?
Of course that would work for Taverna, but no other system looking at
that provenance would understand it ;) But perhaps that will have to
be just good enough.
> If this can't be handled soundly and properly in PROV-O and OWA, then I
> don't think we should try (or, fake it).
RDF lists can handle it well, and should map easily to lists in XML,
JSON and PROV-N.
For instance, imagine a functional prov:completeMembers:
:todays-us-supreme-court a prov:Dictionary ;
prov:completeMembers ( :k0, :k1 )
:k0 a prov:KeyValuePair; # (Note:
this would not be done in addition to a simple Collection.)
prov:pairKey "chief";
prov:pairValue <http://dbpedia.org/resource/John_Glover_Roberts,_Jr.> .
:k1 a prov:KeyValuePair;
prov:pairKey "seat 4";
prov:pairValue <http://dbpedia.org/resource/Anthony_Kennedy> .
This expands to something like:
:todays-us-supreme-court prov:completeMembers _:list0 .
_:list0 a rdf:List ;
rdf:first :k1 ;
rdf:rest _:list1 .
_:list1 a rdf:List ;
rdf:first :k1 ;
rdf:rest rdf:nil . # terminating the list
(The same list could be done for a straight prov:Collection directly
to the entities, however I have separate concerns about your mixing of
hadMember of the entities and the key-value pairs in
http://dvcs.w3.org/hg/prov/file/tip/examples/eg-34-us-supreme-court-membership/rdf/eg-34-us-supreme-court-membership.ttl
)
However it might not always be appropriate to have a closed list of
members, so if we adopt the above I think we should also keep a flat
prov:hadMember expression. You *can* express an open-ended list by not
specifying the "rdf:rest rdf:nil" - but neither the RDF/XML nor Turtle
syntactic sugar for lists supports this.
rdf:Lists can however be horrible to query from SPARQL as unless you
know the exact list position, you will have to do something recursive
to follow the rdf:rest chain.
This could be argued is rather a SPARQL issue -
http://www.w3.org/2009/sparql/wiki/Feature:AccessingRdfLists - but is
not addressed by SPARQL 1.1.
> With the use of a custom attribute and type ( taverna:isComplete or class
> taverna:CompleteDictionary ), can you accept removing the special optional
> parameter on DM's memberOf?
I can accept it if it is right as you say that the majority of the WG
dislikes it, but I view it as a reduction of interoperability.
I do however buy the argument that we don't want to go down the rabbit
hole of defining closed worlds. The rdf:Lists is one way to work
around this, but if this is not acceptable then I'm OK with removing
CompleteDictionary.
--
Stian Soiland-Reyes, myGrid team
School of Computer Science
The University of Manchester
Received on Wednesday, 6 June 2012 15:55:42 UTC