>-------- Original Message --------
>> From: Pat Hayes <mailto:phayes@ihmc.us>
>> Date: 17 May 2004 18:37
>>
>> > RDF Graph Patterns::
>> >
>> > An RDF Graph Pattern is a description of a set of RDF subgraphs. If
>> > an RDF graph is in the set then it is said to match the graph pattern.
>> >
>>
>> Sound too general to me. For example, one can describe RDF graphs
>> using reification, but I wouldnt want to count that as a 'pattern'.
>> Suggest instead your first example as a suitable definition of pattern.
>
>I didn't mean that only patterns describe a set of subgraphs but I take your
>point.
>
>>
>> > (If anyone can define 'match' further without getting into defining
>> > the expressiveity of the pattern, do suggest something).
>> >
>> > c.f regular expressions and strings - and we get to define the
>> > expressivity of the graph pattern expression language.
>> >
>> > Example: Simple case::
>> >
>> > RDF Graphs are defined in http://www.w3.org/TR/rdf-concepts/ in terms
>> > of RDF triples. An RDF triple pattern is an RDF Triple with the
>> > addition that subject, predicate or object can be a named query
>> > variable as well as the items defined in "RDF Concepts". An RDF Graph
>> > Pattern is a set of RDF Triple Patterns.
>>
>> That would be my definition, not an example.
>
>What about variable length paths e.g. ?x -> <p>* -> ?y (if we want to have
>them of course).
Well, I'd call that a special kind of variable, but I see that it
doesnt fall under that definition. OK, here's a second try.
An RDF graph pattern is defined relative to a set of variable types
and binding mappings, and is some entity which may contain some
number of variables and which yields an RDF graph when a binding
mapping is applied to those variables. Variables of a given type may
be restricted to certain kinds of binding. A simple example is an RDF
graph in which some URIrefs have been replaced by variables, and a
binding mapping takes a variable to a URIref or literal.
> A suitable defn os set membership might be OK but it seems
>a bit contorted.
>
>(A whiteboard at WWW would sort this out)
Yes, except I won't be there.
>
>>
>> >
>> > A match is an association of RDF graph labels and the variables, such
>> > that substituting the labels for variables yields an RDF subgraph of
>> > the source RDF graph.
>> >
>> > In matching, if a query variable is used in more than one triple
>> > pattern, and/or more than once in a single triple pattern, it must be
>> > bound to the same label in any one query solution.
>>
>> That should be part of the definition of 'substitute for a variable'.
>> It kind of falls out of he way that RDF graphs syntax is defined in
>> terms of sets rather than as expressions.
>>
>> >
>> > Discussion::
>> >
>> > This is the conjunctive form of graph patterns : its an RDF graph with
>> > some of the subject/predicate/object replaced by query variable (not
>> > bNodes of the graph). If we have disjunction in any form, then just a
>> > graph-with-variables isn't enough - we need a construction to express
>> > disjunction or (maybe) reify the query pattern.
>>
>> Or think of it as a set of query graph patterns.
>
>Agreed.
>
>>
>> >
>> > This does not say anything about restricting labels matched by value
>> > or lexical form. There may well be syntactic sugar to make this
>> > easier to write but it is equivalent to putting a variable (not part
>> > of the results for the variable binding case) into the graph pattern
>> > and, separately, writing an expression limiting the range of values
>> > for the label.
>>
>> True, but we could accommodate that into this definition of pattern
>> by allowing 'variables' to be more highly structured things, like
>> describing sorted quantification as quantification over sorted
>> variables.
>
>Just to check I understand here: we then need operators to pick out the
>parts of the variables: e.g. lang(?x) to get the lang tag
Right, or maybe we can think of the variables as having internal
structure (so the operators are just selectors). Whatever.
>
>(minor question: what is the type of a lang tag? String?).
It doesnt really have a type specified. I guess if it did have one it
would have to be xsd:string, yes. Or maybe some special subclass of
xsd:string.
>
>>
>> >
>> > I'd like to see a building block being a conjunctive graph pattern
>> > with a set of restrictions on labels.
>>
>> Sounds about right to me, though I think we need to be very careful
>> to describe those restrictions appropriately. One kind of useful
>> restriction might be to a datatype, to constrain literal bindings (?).
>>
>> Pat
>>
>> >
>> > Andy
Pat
--
---------------------------------------------------------------------
IHMC (850)434 8903 or (650)494 3973 home
40 South Alcaniz St. (850)202 4416 office
Pensacola (850)202 4440 fax
FL 32501 (850)291 0667 cell
phayes@ihmc.us http://www.ihmc.us/users/phayes