W3C

XML Processing Model WG

Meeting 19, 4 May 2006

Agenda

See also: IRC log

Attendees

Present
Alessandro, Andrew, Henry, Michael, Norman, Paul, Richard, Rui, Alex, Murray
Regrets
Erik, Mohamed
Chair
Norm
Scribe
Norm

Contents


Accept this agenda?

-> http://www.w3.org/XML/XProc/2006/05/04-agenda.html

Accepted

Accept minutes from the previous teleconference?

-> http://www.w3.org/XML/XProc/2006/04/27-minutes.html

Accepted

Next meeting: 11 May telcon

Any regrets?

Andrew is on vacation 11, 18 May

Michael is away for 11, 18, 25 May

Paul is away 11 May

Henry is away 18 May

Face-to-face meeting

Registration: http://www.w3.org/2002/09/wbs/38398/XProcFTF2/

Local arrangements: http://www.w3.org/XML/XProc/2006/08/02-04-f2f.html

That's the beginnings of a local arrangements page, more details to follow

Open action items

A-18-01 is continued

A-17-02 is in progress

A-13-01 is continued, new ETA 15 June 2006

Issue 3113: Does the pipeline engine act as a resource manager?

->http://www.w3.org/Bugs/Public/show_bug.cgi?id=3113

Richard: I posted a couple of messages today, but looking at the example the email was talking about: XSLT importing a document produce somewhere else.
... This is a conventional temporary file problem
... Simply store things in files with generated names and then convey that name elsewhere.
... There are other examples, such as XIncluding things.
... You can simply transform the documents to refer to the generated file names.
... As a concrete proposal for the temporary file system; I suggest a component that takes a document as input, stores it somewhere, and returns the URI that it used.

Alex: Do we have to do anything about this?

Norm: I don't think consensus is moving towards support for this proposal

HT: We'll need to spec quite carefully our story about pipeline parameters, variables, and their relationship to component and step variables.
... We've been postponing that for some time. But to make the workarounds work most gracefully, that mechanism is going to have to be there.

Proposal: No, the pipeline engine is not required to act as a resource manager.

Accepted

Norm asks HT to expand on his pipeline/parameter variable story

HT: Consider that I want to do something like this: take the output of Richards write input to temp file component and mediate between that and a component that will substitute the value into a document.
... I have a general purpose component that has two parameters, an XPath and a string. Wherever the XPath matches, it replaces what it finds with the string.
... The obvious thing to do is set the value of attributes or the text content of elements.
... Now I can get very close to doing the XInclude example if only I can get the result of Richards temporary component into a variable so that I can get it into a parameter.
... That's appealing to some fairly natural concepts of pipeline variables and ways of using pipeline variables to supply component parameters

Alex: I wanted to second what Henry said. This is an important use case for lots of piplines I've built. I need to be able to bind to variables in a uniform way and be able to point into documents and update them.
... Deleting whole subtrees is an example.
... Renaming elements and attributes, namespaces, etc.

Norm: I think it's important to make sure that we get the framework right to support all the kinds of components that we need.

<scribe> ACTION A-19-01: Norm to create an issue for this [recorded in http://www.w3.org/2006/05/04-xproc-minutes.html#action01]

<scribe> ACTION A-19-02: Alex to send mail describing his ideas about variables [recorded in http://www.w3.org/2006/05/04-xproc-minutes.html#action02]

Richard: I wanted to mention a relationship between variable mechanisms and one of the issues that came up with the resource manager issue.
... If some component writes something to a temporary file, it's important that a component consuming it not try to read it before it's done.
... Using a variable to communicate the location of the temporary files gives you a mechanism for managing that.
... If a component can't start before the variable is set, then the process is managed by that variable.
... You might use variables for other kinds of synchronization as well if we did that.

Norm: From the end of this discussion last week, how do we identify the inputs and outputs. By naming the endpoints or the things that flow through the pipe.
... From the list, I think consensus is moving towards identifying the end points.

HT: Having worked for a while with the alternative, I think this is the right thing to do but we need to live with it for a while.
... It's not as immediately obvious to see what a graceful surface syntax is going to be.

Alex: Internally, this is the right model. I'm just not convinced that there aren't cases where there are implicit connections to happen.
... But I'm willing to push that off to the future.

HT: Absolutely.
... You don't want to see any of the low-level stuff at the authoring level

Richard: Abbreviation still leaves the question of what to do for the low-level syntax.
... Recall that there are two ways to do this: by having names on each input/output or by naming the steps and having standard names for the inputs/outputs on each component

Alex: We can work on the shortcuts after we have a full syntax.

Richard: I think you're basically right. There's an obvious back-door into a resource manager if you give all the inputs/outputs names that are URIs.

Norm expresses some concern about readability of a naming scheme that relies on knowledge of the underlying component input/output names.

<ht> Unabbreviated abstract syntax consists of:

Component((String)shortName,
          (ImplDependent)functionality,
          (Set of String)inputPorts,
          (Set of String)outputPorts,
          (Set of String)parameters)

- ---------------

Pipeline((Set of Component)components,
         (Set of String)parameters,
         (Set of Step)steps,
         (Set of Pipes)pipes,
         (InputPort)input?,
         (OutputPort)output?)

Step((String)name,
     (Component)component,
     (Set of Binding)arguments)

Pipe((OutputPort)source,
     (InputPort)destination)

Port((String)step,
     (String)port)

OutputPort == Port such that port is in |step|.component.outputPorts
InputPort == Port such that port is in |step|.component.inputPorts

Binding == ExplicitBind((String)name,(String)value) |
           BindByRef((String)name,(String)parameter) where parameter
             is in surrounding pipeline.parameters

Invoke a pipeline with input?, output? and (Set of ExplicitBinding).

Extracted by scribe from 2006May/0012.html

HT: Definition of a component in some implementation independent way

HT: A step is a binding to a component

HT: A pipe is a connection from an orgin to a destination
... In order to specify a pipe, you need to know the name of the step and the name of the port for each connection
... Note that ports have constant names and all that need to have ad hoc names are steps
... All components should have universal standard names for their primary input and primary output

Norm: I think I hear consensus that we're going to take a stab at this by naming the endpoints that are bolted together.

<richard> I gave an XML syntax for this way of expressing it in http://lists.w3.org/Archives/Public/public-xml-processing-model-wg/2006Apr/0119.html

Issue 3118: Should an implementation of the language be allowed to perform caching?

->http://www.w3.org/Bugs/Public/show_bug.cgi?id=3118

<Alessandro> Absolutely

Norm: I propose that in light of our decision about the "functionality" of components, this is purely a quality-of-implementation issue

Accepted.

Issue 3114: Are explicit dependencies required?

->http://www.w3.org/Bugs/Public/show_bug.cgi?id=3114

Norm: I don't think we have enough information to answer this yet.

Richard: I think there's a simple synch. mechansim: have a component that waits until it has received a whole document.
... Then you use that component as input.
... Suppose you wanted to stop an XSLT component from running until some document had been generated. Then you could not give it its stylesheet until that document was ready.
... You could do that by passing the stylesheet through some component that waits until another document is fully written.

Murray: How is it going to do that? By checking that it exists and is closed?

Richard: I imagine that this is a special purpose component that reads the document.
... The mechanism for sync. can probably be achieved by components in the pipeline.

Alex: In some sense I agree that having input dependencies is a great way to do this. But that may be confusing to users.
... But if we do synch. components then we have to deal with deadlock and other non-trivial issues.

Murray: It occurs to me that if we had a p:depends element that named an input and an output then we could describe the dependency
... In addition to resolving the dependencies, it would provide an opportunity to rename things.

Face-to-face meeting

Murray: There's updated information on the page provided. In the comments section of the registration, please indicate how you planned to arrive and how you'd hope to travel.
... I'll send suggestions for how to get from the airport to here.
... This is a four-seasons resort area, so book rooms early.

ADJOURNED

Summary of Action Items

[NEW] ACTION A-19-01: Alex to send mail describing his ideas about variables [recorded in http://www.w3.org/2006/05/04-xproc-minutes.html#action02]
[NEW] ACTION A-19-02: Norm to create an issue for this [recorded in http://www.w3.org/2006/05/04-xproc-minutes.html#action01]
 
[End of minutes]

Minutes formatted by David Booth's scribe.perl version 1.127 (CVS log)
$Date: 2006/05/25 16:28:15 $