- From: Eric Prud'hommeaux <eric@w3.org>
- Date: Fri, 10 Dec 2004 11:14:23 -0500
- To: public-rdf-dawg@w3.org
- Message-ID: <20041210161423.GA21680@w3.org>
In response to a thread on UNSAID in the comments list [1], I've drafted a section on UNSAID [2]. Andy asked about implementing it on an SQL-accessed triple store. I thought I'd share the answer with the WG. I test for default negation by doing an outer join to the triple in the positive and then constraining that part of that triple is NULL: CREATE TABLE holds (id INTEGER NOT NULL AUTO_INCREMENT, s VARCHAR(80), p VARCHAR(80), o VARCHAR(80), PRIMARY KEY(id)); -- _:a foaf:name "Alice" . -- _:a foaf:page <http://work.example/alice> . -- _:a foaf:workplaceHomepage <http://work.example/alice> . -- _:b foaf:name "Bob" . -- _:c foaf:name "Eve" . -- _:c foaf:page <http://isp.example/eve> . -- _:c foaf:workplaceHomepage <http://work.example/eve> . INSERT INTO holds (s, p, o) VALUES ('_:a', 'foaf:name', '"Alice"'); INSERT INTO holds (s, p, o) VALUES ('_:a', 'foaf:page', '<http://work.example/alice>'); INSERT INTO holds (s, p, o) VALUES ('_:a', 'foaf:workplaceHomepage', '<http://work.example/alice>'); INSERT INTO holds (s, p, o) VALUES ('_:b', 'foaf:name', '"Bob"'); INSERT INTO holds (s, p, o) VALUES ('_:c', 'foaf:name', '"Eve"'); INSERT INTO holds (s, p, o) VALUES ('_:c', 'foaf:page', '<http://isp.example/eve>'); INSERT INTO holds (s, p, o) VALUES ('_:c', 'foaf:workplaceHomepage', '<http://work.example/eve>'); -- SELECT ?name -- WHERE ( ?x foaf:name ?name ) -- UNSAID ( ?x foaf:mbox ?mbox ) SELECT h1.o AS name FROM holds AS h1 LEFT OUTER JOIN holds AS h2 ON h2.s=h1.s AND h2.p="foaf:page" WHERE h1.p="foaf:name" AND h2.o IS NULL -- +-------+ -- | name | -- +-------+ -- | "Bob" | -- +-------+ -- SELECT ?name ?homepage -- WHERE ( ?x foaf:name ?name ) -- OPTIONAL { ( ?x foaf:page ?homepage ) -- UNSAID ( ?x foaf:workplaceHomepage ?homepage ) } SELECT h1.o AS name, h2.o AS homepage FROM holds AS h1 LEFT OUTER JOIN holds AS h2 ON h2.s=h1.s AND h2.p="foaf:page" LEFT OUTER JOIN holds AS h3 ON h3.s=h1.s AND h3.p="foaf:workplaceHomepage" AND h2.o=h3.o WHERE h1.p="foaf:name" AND h3.o IS NULL -- +-------+--------------------------+ -- | name | homepage | -- +-------+--------------------------+ -- | "Bob" | NULL | -- | "Eve" | <http://isp.example/eve> | -- +-------+--------------------------+ [1] http://lists.w3.org/Archives/Public/public-rdf-dawg-comments/2004Nov/thread.html#16 [2] http://www.w3.org/2001/sw/DataAccess/rq23/#unsaid -- -eric office: +81.466.49.1170 W3C, Keio Research Institute at SFC, Shonan Fujisawa Campus, Keio University, 5322 Endo, Fujisawa, Kanagawa 252-8520 JAPAN +1.617.258.5741 NE43-344, MIT, Cambridge, MA 02144 USA cell: +1.857.222.5741 (does not work in Asia) (eric@w3.org) Feel free to forward this message to any list for any purpose other than email address distribution.
Received on Friday, 10 December 2004 16:14:23 UTC