W3C home > Mailing lists > Public > public-prov-wg@w3.org > January 2013

Re: ISSUE-595: Prov-xml subtyping needs to be marked in the document

From: Stephan Zednik <zednis@rpi.edu>
Date: Thu, 31 Jan 2013 09:30:45 -0700
Cc: pgroth@gmail.com, Hook Hua <hook.hua@jpl.nasa.gov>, Provenance Working Group <public-prov-wg@w3.org>
Message-Id: <0A513FE9-FAA8-4EED-A5AB-E3F524C878FD@rpi.edu>
To: Luc Moreau <L.Moreau@ecs.soton.ac.uk>
Hi Luc,

I will update the Type section of the Note with a discussion on subtyping.

On Jan 31, 2013, at 8:26 AM, Luc Moreau <L.Moreau@ecs.soton.ac.uk> wrote:

> Hi Stephan,
> 
> I think I would like to see some explanation in the html document on how we express subtyping.
> A few questions, to illustrate the guidance I am looking for.
> 
> 
> - Is it still legal to write 
> 
>   <entity prov:id="foo"><prov:type xsi:type="xsd:QName">prov:Plan</prov:type></entity>

Yes

> 
> - Is it legal to write:
> 
>   <entity prov:id="foo" xsi:type="prov:Plan"></entity>

This is a good question.  I will look into it.  it validates.

> 
> - Are they both equivalent to 
> 
>   <plan prov:id="foo"></plan>

Yes.

> 
> 
> - prov:type is used for "multiple inheritance"
> 
>   <agent prov:id="bar">
>     <prov:type xsi:type="xsd:QName">prov:Person</prov:type>
>     <prov:type xsi:type="xsd:QName">foaf:Person</prov:type>
>     <prov:type xsi:type="xsd:QName">ex:Employee</prov:type>
>   </agent>
> 
> - are the following equivalent?
>   <agent prov:id="legalperson01">
>     <prov:type xsi:type="xsd:QName">prov:Person</prov:type>
>     <prov:type xsi:type="xsd:QName">prov:Organization</prov:type>
>   </agent>
> 
>   <person prov:id="legalperson01">
>     <prov:type xsi:type="xsd:QName">prov:Organization</prov:type>
>   </person>
> 
>   <organization prov:id="legalperson01">
>     <prov:type xsi:type="xsd:QName">prov:Person</prov:type>
>   </organization>

Yes.

>    
> - when there are multiple ways of expressing the same assertion, is there a preferred way?

I don't believe an official preference has been discussed by the PROV-XML group or general WG.  I think my preference would be that the type used be as specific whenever possible (e.g. use <prov:person> instead of <prov:agent> if it's a person)

For multityping I don't have a preference yet.   could suggest using multiple declarations with the same id to multi-type (assuming no id uniqueness restriction).  This leaves a PROV-XML specific parser to interpret these two records as describing the same agent.

<person prov:id="legalperson01"/>
<organization prov:id="legalperson01"/>

In this case prov:type would generally be used to specify a type that does not have a corresponding complexType in a relevant schema.

--Stephan

> 
> Thanks,
> Luc
> 
> On 01/31/2013 12:56 PM, Paul Groth wrote:
>> For me it does.
>> 
>> Thanks
>> Paul
>> 
>> 
>> On Wed, Jan 30, 2013 at 7:08 PM, Stephan Zednik <zednis@rpi.edu> wrote:
>> Paul, Luc
>> 
>> Do the updates to the schema and the Note documentation resolve this issue?
>> 
>> Thanks,
>> --Stephan
>> 
>> On Jan 14, 2013, at 6:41 PM, Stephan Zednik <zednis@rpi.edu> wrote:
>> 
>> > I have committed changes to the editors draft of the PROV-XML Note to reflect the changes to the schema.
>> >
>> > changeset: https://dvcs.w3.org/hg/prov/rev/46e10eeaa3ef
>> >
>> > editors draft: https://dvcs.w3.org/hg/prov/raw-file/46e10eeaa3ef/xml/prov-xml.html
>> >
>> > --Stephan
>> >
>> > On Jan 14, 2013, at 2:55 PM, Stephan Zednik <zednis@rpi.edu> wrote:
>> >
>> >> I have updated the PROV schema with new elements and complex types that reflect PROV-defined specializations of entity (bundle, collection, empty collection, plan), agent (person, organization, software agent) and derivation (quotation, revision, primary source).
>> >>
>> >> You can now define a prov:Person with the following XML:
>> >>
>> >> <prov:person prov:id="ex:Paolo" />
>> >>
>> >> The old manner of defining a prov:Person (and all other types affected by this update) is still valid.
>> >>
>> >> <prov:agent prov:id="ex:Paolo">
>> >>   <prov:type xsi:type="xsd:QName">prov:Person</prov:type>
>> >> </prov:agent>
>> >>
>> >> Similar updates have been made for bundle, collection, empty collection , plan, organization, software agent, quotation, revision, and primary source.
>> >>
>> >> In the case of quotation, revision, and primary source the XML elements have been named to align with PROV-O.
>> >>
>> >> <xs:element name="wasRevisionOf"        type="prov:Revision"/>
>> >> <xs:element name="wasQuotedFrom"        type="prov:Quotation"/>
>> >> <xs:element name="hadPrimarySource"     type="prov:PrimarySource"/>
>> >>
>> >> Change-set to PROV-XML schema
>> >>
>> >> https://dvcs.w3.org/hg/prov/rev/fb3e3ef40222
>> >>
>> >> Change-set to PROV-XML example files
>> >>
>> >> https://dvcs.w3.org/hg/prov/rev/33a576fb0b32
>> >>
>> >> The editors draft of the PROV-XML note has not yet been updated, but I intend to have it updated before this week's telecon.
>> >>
>> >> --Stephan
>> >>
>> >> On Nov 21, 2012, at 5:00 PM, "Hua, Hook (388C)" <hook.hua@jpl.nasa.gov> wrote:
>> >>
>> >>> Hi Stephan and Luc,
>> >>>
>> >>> If we end up supporting both ways (three if you count Luc's one-liner
>> >>> attribute way), then it may leave some variability of validation in the
>> >>> different approaches.
>> >>>
>> >>> For example, with the <prov:wasRevisionOf> approach, it can be explicitly
>> >>> validated by code ingesting the XML traces since the type is expressed in
>> >>> the XSD.
>> >>>
>> >>> But with the <prov:type xsi:type="xsd:QName">prov:Revision</prov:type>
>> >>> approach, the type value is currently left open as an xs:anySimpleType.
>> >>>
>> >>> Since we are explicitly defining an <prov:wasRevisionOf>, should we then
>> >>> define a matching set of restriction constraints on <prov:type> ? For
>> >>> example, a simpleType restriction with enumerations that match the
>> >>> explicit extensions:
>> >>>
>> >>> <xs:complexType name="Derivation">
>> >>>  <xs:sequence>
>> >>>    <xs:element name="generatedEntity"  type="prov:EntityRef"/>
>> >>>    <xs:element name="usedEntity"       type="prov:EntityRef"/>
>> >>>    <xs:element name="activity"         type="prov:ActivityRef"
>> >>> minOccurs="0"/>
>> >>>    <xs:element name="generation"       type="prov:GenerationRef"
>> >>> minOccurs="0"/>
>> >>>    <xs:element name="usage"            type="prov:UsageRef"
>> >>> minOccurs="0"/>
>> >>>    <xs:choice minOccurs="0" maxOccurs="unbounded">
>> >>>      <xs:element ref="prov:label"/>
>> >>>      <xs:element ref="prov:type">
>> >>>          <xs:simpleType>
>> >>>              <xs:restriction base="xs:anySimpleType">
>> >>>                  <xs:enumeration value="prov:Revision"></xs:enumeration>
>> >>>              </xs:restriction>
>> >>>          </xs:simpleType>
>> >>>      </xs:element>
>> >>>      <xs:any namespace="##other"/>
>> >>>    </xs:choice>
>> >>>  </xs:sequence>
>> >>>  <xs:attribute ref="prov:id"/>
>> >>> </xs:complexType>
>> >>>
>> >>> <xs:element name="wasDerivedFrom" type="prov:Derivation"/>
>> >>>
>> >>>
>> >>> --Hook
>> >>>
>> >>>
>> >>>
>> >>>
>> >>> On 11/19/12 10:33 PM, "Luc Moreau" <L.Moreau@ecs.soton.ac.uk> wrote:
>> >>>
>> >>>> Hi Stephan,
>> >>>>
>> >>>> I think I concur with your conclusion: it may end up making tooling
>> >>>> complex. Plus, the third way of writing things:
>> >>>>
>> >>>> <proc:agent xsi:type="prov:Person" prov:id="ex:e"/>
>> >>>>
>> >>>> Professor Luc Moreau
>> >>>> Electronics and Computer Science
>> >>>> University of Southampton
>> >>>> Southampton SO17 1BJ
>> >>>> United Kingdom
>> >>>>
>> >>>>>>>
>> >>>>>>> <prov:wasDerivedFrom>
>> >>>>>>> <prov:generatedEntity prov:ref="tr:WD-prov-dm-20111215"/>
>> >>>>>>> <prov:usedEntity prov:ref="tr:WD-prov-dm-20111018"/>
>> >>>>>>> <prov:type xsi:type="xsd:QName">prov:Revision</prov:type>
>> >>>>>>> </prov:wasDerivedFrom>
>> >>>>>>>
>> >>>>>>> could now be modeled as
>> >>>>>>>
>> >>>>>>> <prov:wasRevisionOf>
>> >>>>>>> <prov:generatedEntity prov:ref="tr:WD-prov-dm-20111215"/>
>> >>>>>>> <prov:usedEntity prov:ref="tr:WD-prov-dm-20111018"/>
>> >>>>>>> </prov:wasRevisionOf>
>> >>>>>>>
>> >>>>>>>
>> >>>
>> >>>
>> >>>>>>>
>> >>>
>> >>>
>> >>>
>> >>
>> >>
>> >>
>> >
>> >
>> >
>> 
>> 
>> 
> 
> -- 
> 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 Thursday, 31 January 2013 16:31:21 UTC

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