RE: REX evaluation

-------- Original Message --------
> From: public-rdf-dawg-request@w3.org <>
> Date: 09 June 2004 19:59
> 
> Just thought it was worth evaluating a form of the XQuery
> syntax we're using at NI to query the knowledge encoded in
> OWL ontologies. I'll refer to the RDF version of the syntax
> as "RDF Extensions to XQuery", or REX.

Rex, rex, regem, regis, regi, rege :-)

> 
> The language really does nothing but add a few new functions
> to XQuery:
> 
> individuals() returns a sequence of all the URIs used as
> either subjects or objects in triples,
> properties() returns a sequence of all the URIs used as
> predicates in triples
> dataValues() returns a sequence of all possible datavalues
> (for now, assume they are just the values used as objects in
> triples) related(x, y, R) is a boolean predicate representing
> the existence of the triple 'x R y'
> 
> (This is actually a somewhat simplified version of the
> syntax, but it will do for now.)

What do XQuery path expressions mean in this language?  There have been
various different uses for xpaths elsewhere - what does REX do?

> 
> A query to find all working group members and their names would be:
> 
> for $i in individuals()
> for $d in dataValues()
> where related($i, #DAWG, #memberOf)
>   and related($i, $d, #hasName)
> return <Member><uri>{$i}</uri><name>{$d}</name></Member>
> 
> 
> 3.1: RDF Graph Pattern Matching
> FULLY SUPPORTED
> Each 'related' clause is nothing but a triple which might
> include variables, and you can string them together with
> 'and', so I think a 'where' clause qualifies as a 'graph pattern'.

How does REX interact with XQuery typing? A case I don't understand is:

    :x :p :z .
    :x :p "1" .

and related($x, $z, :p)

How do I write the "for $z in ...." and match both triples?  Is there a way
of getting all the nodes in the graph?  Does it even matter that $z can be
either a datavalue or a URI handled?

> 3.4: Subgraph Results
> FULLY SUPPORTED
> Results can easily be formattted as a subgraph of the
> original graph: <rdf:RDF xmlns:rdf="..."> {
>   for $i in individuals()
>   for $d in dataValues()
>   where related($i, #DAWG, #memberOf)
>     and related($i, $d, #hasName)
>     and isCommonlyMisspelled($d)
>   return <rdf:Description rdf:id={$i}>
>            <memberOf rdf:resource="#DAWG"/>
>            <hasName>{$d}</hasName>
>          </rdf:Description>
> }</rdf:RDF>

It is only one case of subgraph results - it is a client-defined RDF.  The
server isn't able to contribute as in a "describe" query ("tell me about") -
this does not cover the description queries (see the motorcycle parts UC).

----

General questions about REX's client-defined return syntax:
(These may be XQuery questions, rather than REX ones)

1/ How does the XML output a qname from the property URI?

Eg. How do I write:

  related($s, $o, $p)
  return <rdf:Description rdf:id={$s} xmlns:???=????>
            <$p>{$o}<$p>               <--- what should be here for "$p"?
         </rdf:Description>

2/ How is correct syntax of the results assured?  Or is it a execution time
error for a syntax error in the XML form of the results?

> 4.4 User-Specifiable Serialization
> FULLY SUPPORTED
> One of the strengths of the language.

My reading of 4.4 "the serialization format of query results" would be
closer to Kendall's example of users-specifiable serialization which is
about going beyond defined MIME types.  I don't read "serialization format"
(protocol issue) as "formatting" (shaping the results).

However, arbitrary XML expressions, in the style of CONSTRUCT, would be good
to see in "DAWL-QL" so as to generate XML fragments at the server (but as
non-normative feature - this would not be a requirement nor design
objective).

Received on Saturday, 12 June 2004 16:16:13 UTC