Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0

Pursuant to https://fedora-commons.org/jira/browse/FCREPO-400Image Removed

There are four places in a service deployment object that a dataStream ID/wsdl message part name are indicated:

  1. Wiki Markupfoxml:digitalObject / foxml:datastream\[@ID="WSDL"\] / foxml:datastreamVersion / foxml:xmlContent / wsdl:definitions / wsdl:message / wsdl:part@name
    1. Conditionality: Unclear
    unmigrated-wiki-markup
  2. foxml:digitalObject / foxml:datastream\[@ID="METHODMAP"\] / foxml:datastreamVersion / foxml:xmlContent / fmm:MethodMap / fmm:Method / fmm:DatastreamInputParm@parmName
    1. Conditionality: apparently indicated by @required, although this element doesn't appear to be part of the assembly of dissemination URL's or sdep validation
    unmigrated-wiki-markup
  3. foxml:digitalObject / foxml:datastream\[@ID="DSINPUTSPEC"\] / foxml:datastreamVersion / foxml:xmlContent / fbs:DSInputSpec / fbs:DSInput@wsdlMsgPartName
    1. Conditonality: Required if present, although @DSMin could imply a lack of requirement
    2. Note: This attribute value must match a DataStream ID in the relevant Digital Object
  4. Wiki Markupfoxml:digitalObject / foxml:datastream\[@ID="WSDL"\] / foxml:datastreamVersion / foxml:xmlContent / wsdl:definitions / wsdl:binding / wsdl:operation / http:operation@location
    1. Conditionality: Required if present
    2. Note: This reference is solely in the form of URL substitution patterns

...

  • DSInput binds a datastream ID to the to a partName, perhaps by the addition of a datastreamId attributevia @pid.  If @pid is absent, the partName will be used as the datastream ID, and the current digital object will be the reference object.  If @pid begins with a slash, it is understood to indicate a datastream ID on the current object.  If @pid is only a Fedora pid, the object with the given pid will be the reference object, and the partName will be used as the datastream ID.  This could further be elaborated by allowing partName to be a messageName/partName structured value.
  • MethodMap indicates the source of a named parm with the input element, and the name of the bound message part in the @parmName.  If @required="false", the value of @defaultValue will stand in for a missing datastream value. If @required="true", a missing datastream will raise an errorMethodMap indicates that a named parm is taken from a datastream
  • WSDL Message Part name is used to establish the substitution pattern in http operations.  If the dissemination URL has a substitution pattern with no corresponding partName, an error is raised.

Thinking about this raises another potential issue under the 3.1 CMA: If an object can have multiple CModels, how should multiple matching SDeps be resolved when building a dissemination?  DefaultAccess defers to the first SDep that the triple store returns, which is effectively an undefined behaviorThis makes some sense to me, but leaves open the issue of when to assert a missing part error, and also where to indicate optionality of a part (and what to do if an optional part is missing).