- From: Pat Hayes <phayes@ihmc.us>
- Date: Mon, 17 May 2004 15:32:55 -0500
- To: "Seaborne, Andy" <andy.seaborne@hp.com>
- Cc: RDF Data Access Working Group <public-rdf-dawg@w3.org>
>-------- 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
Received on Monday, 17 May 2004 16:32:57 UTC