- From: Seaborne, Andy <andy.seaborne@hp.com>
- Date: Thu, 24 Mar 2005 12:25:14 +0000
- To: kendall@monkeyfist.com
- CC: DAWG Mailing List <public-rdf-dawg@w3.org>
Kendall Clark wrote:
> Folks,
>
> This has no status whatever, of course, but I decided to checkin the
> latest RNC schema for SparqlX into CVS, in case others wanted to look
> at or work on it.
>
> It's valid and improved over the last version I sent to the list. In
> particular, there was a spurious <pattern-group> element that's been
> removed completely. As well as a few other changes, mostly to
> cardinalities of some stuff arising from Andy's comments.
The main part of my comments was about making the XML line up with the rq23
definitions, especially the version of group-pattern defined recursively.
That's most easily done by aligning it with the higher levels of the grammar in
the doc, afetr all the syntactic overlay has been dealt with.
sparqlx.rnc defines something rather different - it does not seem to allow the
nesting of GRAPH and UNION for example. Is there a reason for this? I would
assume it isn't a restriction due to the protocol - if it is, then it would be
helpful to me to bring this out as a separate discussion thread.
element query-pattern {
(element group-pattern
| element triple-pattern
| element optional-group { group-pattern }
| element dataset-constraint {
(uri | variable), group-pattern
}
| element union { group-pattern* }
| element constraint { ... }
| element group-pattern
)*
}
This allows recursing defintions: e.g. a GRAPH round a UNION:
SELECT *
{
GRAPH ?g {
{ ?a ?b ?c . FILTER ?c < 3 } UNION { :x :y :z . :a :b :c }
}
}
Group
Graph
Group
Union
Group
Triple pattern ?a ?b ?c
Constriant ?c < 3
Group
Triple pattern :x :y :z
Triple pattern :a :b :c
Roughly - every {} turns into a group, every graph combination operator turns
into an element.
[[Apologies for any incomprehensible RelaxNG - I haven't quite got round to
setting up some tools for it yet.]]
>
> Once someone on Team makes it accessible, it should be available as
>
> http://www.w3.org/2001/sw/DataAccess/sparqlx.rnc
>
> And I'm including it in this message, as well.
>
> Kendall Clark
>
> #$Id: sparqlx.rnc,v 1.1 2005/03/23 21:02:32 kclark Exp $
>
> default namespace = "http://www.w3.org/2001/sw/DataAccess/sparql-xml-syntax/"
>
> start =
> element rdf-query {
> (element ask { empty }
> | element construct {
> triple-pattern
> | element graph-template { triple-pattern+ }
> }
> | element describe { variable*, uri? }
> | element select {
> attribute distinct { xsd:boolean }?,
> attribute limit { xsd:int }?,
> attribute offset { xsd:int }?,
> variable+
> }),
> element query-pattern {
> triple-pattern*,
> (group-pattern*
> | element dataset-constraint { (uri | variable), (group-pattern+ | triple-pattern+) }*
> | element union { group-pattern+ | group-pattern+ }*)
> }?
> }
> variable =
> element variable {
> attribute name { xsd:NCName }
> }
> uri = element uri { xsd:anyURI }
> triple-pattern =
> element triple-pattern {
> attribute optional { xsd:boolean }?,
> element subject { bnode | uri | variable },
> element predicate { bnode | uri | variable },
> element object {
> bnode
> | uri
> | variable
> | element literal {
> attribute datatype { xsd:anyURI }?,
> attribute lang { xsd:NCName }?,
> text
> }
> },
> constraint?
> }
> group-pattern =
> element group-pattern {
> attribute optional { xsd:boolean }?,
> (group-pattern*, triple-pattern*, constraint?)
> }
> bnode =
> element bnode {
> attribute id { xsd:NCName }
> }
> # this needs lots of work...
> constraint = element constraint { (text | variable)+ }
>
Received on Thursday, 24 March 2005 12:25:51 UTC