Difference between revisions of "Prov-XML Identifiers"

From Provenance WG Wiki
Jump to: navigation, search
Line 103: Line 103:
* http://www.w3.org/TR/xmlschema-2/
* http://www.w3.org/TR/xmlschema-2/
* http://www.w3.org/TR/2000/WD-xml-2e-20000814
* http://www.w3.org/TR/2000/WD-xml-2e-20000814
* http://www.w3.org/TR/prov-dm/

Revision as of 19:43, 17 January 2013


This document contains discussions on how to represent identifiers (prov:id) and reference identified elements (prov:ref) in PROV-XML

prov:id and prov:ref type options

In the schema prov:id and prov:ref are defined as XML attributes.


Use type xs:ID for prov:id and xs:IDRef for prov:ref

 <xs:attribute name="id" type="xs:ID"/>
 <xs:attribute name="ref" type="xs:IDRef"/>


Validity constraint: ID
Values of type ID must match the Name production. A name must not appear more than once in an XML document as a value of this type; i.e., ID values must uniquely identify the elements which bear them.

Validity constraint: One ID per Element Type
No element type may have more than one ID attribute specified.

Validity constraint: ID Attribute Default
An ID attribute must have a declared default of #IMPLIED or #REQUIRED.

Validity constraint: IDREF
Values of type IDREF must match the Name production, and values of type IDREFS must match Names; each Name must match the value of an ID attribute on some element in the XML document; i.e. IDREF values must match the value of some ID attribute.


  1. ID recognized by XML tools as an identifier type
    1. There is a uniqueness constraint on prov:id values (scope global to document)
  2. IDRef recognized by XML tools as a reference to an identified element
    1. A prov:ref must match the prov:id of some identified element in the document


  1. lexical space is the same as the unqualified XML name (known as the xs:NCName datatype)
    1. ID and IDRef cannot contain colons, whitespaces, or start with numbers
    2. URIs and qualified names are not valid IDs because both contain colons.
  2. entity/relation records defined in different bundles in the same document cannot have the same prov:id value


Use type xs:QName for both prov:id and xs:IDRef

 <xs:attribute name="id" type="xs:QName"/>
 <xs:attribute name="ref" type="xs:QName"/>




  1. Closest type to PROV-DM QualifiedName


  1. No uniqueness contraint on prov:id
  2. The value of prov:ref is not required to match any existing prov:id
  3. Full URIs (e.g. http://example.com/ns/ex#e1) are not valid values for prov:id; you must use a namespace.


Use type xs:anyURI for both prov:id and xs:IDRef

 <xs:attribute name="id" type="xs:anyURI"/>
 <xs:attribute name="ref" type="xs:anyURI"/>


  1. TODO


  1. Alignment with PROV-O requirement (from RDF) that identifiers be URIs.
  2. URIs are valid values for prov:id


  1. No uniqueness contraint on prov:id
  2. The value of prov:ref is not required to match any existing prov:id