Re: OWL-S Grounding: changes for 1.2 release

> We note that the binding of the XSLT params will not come "for free";
> that is, XSLT software will not know where to get those values
> from. That binding will need to be done by the execution environment
> (e.g., by preprocessing the XSLT script before it is evaluated).

A clarification here: As I understand it, the XSLT engines allow the
parameter values to be passed programmatically. So, it's not a matter of
"preprocessing", if by that you mean somehow rewriting the XSLT. It is
simply a matter of the execution engine needing to know what values to
pass to these XSLT params.

> 
> OWL-S allows that preconditions can be expressed in a variety of logic
> languages, including e.g. SWRL, DRS, RDQL, SPARQL, and KIF.  Here's an
> example that employes SWRL.  The thing to notice about this example is
> simply that evaluation of this precondition binds local variables
> #Firstname, #Lastname, and #Title to values contained in the input
> #Book.  

Clarification: "Values contained in" here means "values connected to the
#Book instance through various properties (hasAuthor, etc)".


These same values are then plugged in to the XSLT script (as
> xsl:params) when it gets processed.  The precondition is the following
> query expressed in SWRL:
> 
>    (?Book :hasAuthor ?Author)
>    (?Author :hasFirstname ?Firstname)
>    (?Author :hasLastname ?Lastname)
>    (?Book :hasTitle ?Title)
> 
> Also note that the grounding is still based on WSDL 1.1 (hence the
> reference to wsdlMessagePart), but this will be updated soon.
> 
> ===== BEGIN EXAMPLE
> <!-- For simplicity we omit the definitions of Book, Firstname,
>       Lastname, Title
> 
>       "congo" is the namespace prefix for the example
>         ("http://www.example.org/congo")

I.e. for the default namespace of the ontology containing the definitions
below.


>       "congo_wsdl" is the namespace prefix for the WSDL spec
>       "p" is the namespace prefix for owl-s/1.2/Process.owl
>       "e" is the namespace prefix for owl-s/1.2/generic/Expression.owl
>       "e" is the namespace prefix for owl-s/1.2/Grounding.owl
> 
> -->
> 
> <p:AtomicProcess rdf:ID="BookInfo">
>      <p:hasInput rdf:resource="#Book">
>      <p:hasLocal rdf:resource="#Firstname">
>      <p:hasLocal rdf:resource="#Lastname">
>      <p:hasLocal rdf:resource="#Title">
> 
>      <p:hasPrecondition>
>         <e:Expression>
>             <e:expressionObject parsetype="Collection">
>                <swrl:IndividualPropertyAtom>
>                  <swrl:propertyPredicate rdf:resource="publ:hasAuthor"/>
>                  <swrl:argument1 rdf:resource="#Book"/>
>                  <swrl:argument2 rdf:resource="#Author"/>
>                </swrl:IndividualPropertyAtom>
>                <swrl:IndividualPropertyAtom>
>                  <swrl:propertyPredicate
>                    rdf:resource="publ:hasFirstname"/>
>                  <swrl:argument1 rdf:resource="#Author"/>
>                  <swrl:argument2 rdf:resource="#Firstname"/>
>                </swrl:IndividualPropertyAtom>
>                <swrl:IndividualPropertyAtom>
>                  <swrl:propertyPredicate
>                    rdf:resource="publ:hasFirstname"/>
>                  <swrl:argument1 rdf:resource="#Author"/>
>                  <swrl:argument2 rdf:resource="#Lastname"/>
>                </swrl:IndividualPropertyAtom>
>                <swrl:IndividualPropertyAtom>
>                  <swrl:propertyPredicate rdf:resource="publ:hasTitle"/>
>                  <swrl:argument1 rdf:resource="#Book"/>
>                  <swrl:argument2 rdf:resource="#Title"/>
>                </swrl:IndividualPropertyAtom>
>             </e:expressionObject>
>         </e:Expression>
>      </e:hasPrecondition>
> </e:AtomicProcess>
> 
> <g:WsdlAtomicProcessGrounding>
>   <g:owlsProcess rdf:resource="#BookInfo>

You need a '/' at the end above.

>    <g:wsdlInput>

The two properties above should be at the same level of indentation
(they're not in my MUA at least), just to avoid confusion.

>     <g:XSLTInputMessageMap>
>      <grounding:wsdlMessagePart rdf:datatype="&xsd;#anyURI">
>         congo_wsdl:BookInfoMessagepart
>      </grounding:wsdlMessagePart>
>      <g:xsltTransformationString>
>       <![CDATA[
>        <xsl:stylesheet version="1.0"
>         xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>         xmlns:congo="http://www.example.org/congo">
> 
>         <xsl:param name="congo:Firstname"/>
>         <xsl:param name="congo:Lastname"/>
>         <xsl:param name="congo:Title"/>
> 
>         <xsl:template match="/">
>              <Book>
>                 <author>
>                    <xsl:value-of select="$congo:Firstname"/>
>                    <xsl:value-of select="$congo:Lastname"/>
>                 </author>
>                 <title>
>                    <xsl:value-of select="$congo:Title"/>
>                 </title>
>              </Book>
>         </xsl:template>
>       </xsl:stylesheet>
>      ]]>
>     </g:xsltTransformationString>
>    </g:XSLTInputMessageMap>
>   </g:wsdlInput>
> </g:WsdlAtomicProcessGrounding>
> ===== END EXAMPLE
> 
> Final note: In SWRL and DRS the input parameters and local parameters
> can be mentioned by their URI.  But that isn't true of SPARQL, RDQL,
> and KIF. When one of those languages is used a mapping is needed that
> explicitly shows the correspondence between atomic process variables
> and the corresponding variables mentioned in the precondition.  This
> requires a minor extension to the existing grounding ontology (which

Not to the grounding ontology but to the Expression ontology, I think.

> was mentioned at the beginning of this message).  This will be
> described in a separate message.
> 
> Regards,
> David
> 
> 

Received on Monday, 11 July 2005 09:35:05 UTC