- From: Steve Harris <steve.harris@garlik.com>
- Date: Mon, 1 Feb 2010 18:56:16 +0000
- To: Andy Seaborne <andy.seaborne@talis.com>
- Cc: SPARQL Working Group <public-rdf-dawg@w3.org>
On 1 Feb 2010, at 09:09, Andy Seaborne wrote:
> Summary:
>
> 1/ Use of ! ex:property meaning anything but that property.
>
> # ?x connected to :y but not by having the same type:
> ?x !rdf:type ?y .
I'm a little confused by the semantics of this, is it:
?x ?p ?y .
NOT EXISTS { ?x rdf:type ?y } .
or
?x ?p ?y
FILTER(?p != rdf:type)
- Steve
> # ?x connected to ?y by some path that excludes rdf:type
> ?x !( rdf:type | ^rdf:type)* ?y .
>
> and a follow-on from that, not mentioneded by Doug, would be "any"
> property (but not bound to a variable).
>
> 2/ Describing properties rather than just naming them.
>
> Andy
>
> -------- Original Message --------
> Subject: Comments on SPARQL 1.1 Property Paths
> Resent-Date: Mon, 01 Feb 2010 02:43:25 +0000
> Resent-From: public-rdf-dawg-comments@w3.org
> Date: Fri, 29 Jan 2010 09:52:46 -0500
> From: Douglas Reid <dreid@bbn.com>
> To: public-rdf-dawg-comments@w3.org
>
> I had a few questions/comments regarding the draft of the SPARQL 1.1
> Property Paths that was just published.
>
> Has there been any consideration of enabling, for lack of a better
> term, negated properties in property paths? By negated properties,
> I mean the notion of "any property EXCEPTING x". The use case that
> comes to mind is the notion of determining if two entities are
> connected via some graph pattern, without having to know how they
> are connected and wanting to ignore trivial / useless connections.
> For instance, I might want to discover whether or not ex:GeorgeWBush
> and ex:TonyBlair have a connection in the graph, ignoring the fact
> that they are both (rdf:type ex:Politician)s.
>
> It seems that having a negation mechanism might be more efficient,
> in certain cases, than a long listing of alternatives.
>
> Consider:
>
> {
> ?x ( foaf:knows | ex:meetOnce | ex:workedWith | ex:ownedCompany |
> ex:employed | .. )* ?y .
> }
>
> as compared to:
>
> {
> ?x !( rdf:type | ^rdf:type)* ?y .
> }
>
> Note: Here the "!" character is meant to convey a path that exists
> but does not include these properties, as opposed to implying the
> absence of a path using those properties.
>
> I realize that with clever ontology-wrangling, one could make all
> "interesting" properties a sub-property of a utility property that
> would serve to make property path querying easier, but that seems
> less elegant and, in some situations, impractical.
>
> Somewhat related question: I think I understand why the WG doesn't
> want to tackle variable property paths, but might it be useful to
> include a mechanism for general property description, without
> explicit property naming? One wouldn't need the chosen property for
> the path returned just be able to ontologically-describe an
> appropriate property to chose when considering paths.
>
> For instance, imagine trying to ensure, without exhaustive
> specification, that all property paths identified only occur through
> non-literal objects, so as to avoid trivial connections (say
> ex:first_name or ex:age).
>
> It might look something like:
>
> {
> ?x ( [ a owl:ObjectProperty ] | ^[ a owl:ObjectProperty ] ) * ?y .
> }
>
> Thanks for listening,
> Doug.
>
>
--
Steve Harris, Garlik Limited
2 Sheen Road, Richmond, TW9 1AE, UK
+44 20 8973 2465 http://www.garlik.com/
Registered in England and Wales 535 7233 VAT # 849 0517 11
Registered office: Thames House, Portsmouth Road, Esher, Surrey, KT10
9AD
Received on Monday, 1 February 2010 18:56:46 UTC