>In response to a thread on UNSAID in the comments list [1], I've
>drafted a section on UNSAID [2].
Let me strongly suggest that we do not include UNSAID in SPARQL. To
do so would violate the basic assumption that underlies RDF and OWL
that graphs cannot be assumed to be complete sources of information.
RDF graphs cannot be assumed to be databases.
The message that started the thread
http://lists.w3.org/Archives/Public/public-rdf-dawg-comments/2004Nov/0016.html
has an example that illustrates the point in its use case 2, the
financial institution that must not send its prospectus to customers
in the US or Canada. For this institution to rely on an UNSAID query
to ensure this rule was obeyed would be very risky, since in general
the RDF content against which the query is being evaluated is not
known to be complete with regard to citizenship information. It
cannot be so known, except by special access to off-web information,
as there are currently no Web protocols for communicating the fact
that a source is complete in this way. Unless one is sure that an RDF
graph is suitably complete, to conflate not-present-in-the-graph with
known-to-be-false is a very dangerous move, and quite likely to
result in an invalid inference. The use of UNSAID in SPARQL makes the
entailment of a query response by the target hostage to a graph
property which cannot itself be communicated by any current Web
protocol. This is a very dangerous precedent to set, and violates the
design guides of the entire RDF/RDFS/OWL development effort so far.
If SPARQL contains UNSAID then it will be inconsistent with any
account of meaning which is based on the RDF/RDFS/OWL normative
semantics. This will not render SPARQL unusable, but it will place it
outside the 'semantic web layer cake' and probably lead to the
eventual construction of a different, and rival, query language for
use by Web reasoners.
Pat
>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.
>
>Content-Type: application/pgp-signature; name="signature.asc"
>Content-Description: Digital signature
>Content-Disposition: inline
>
>Attachment converted: betelguese2:signature 178.asc (????/----) (000D0971)
--
---------------------------------------------------------------------
IHMC (850)434 8903 or (650)494 3973 home
40 South Alcaniz St. (850)202 4416 office
Pensacola (850)202 4440 fax
FL 32502 (850)291 0667 cell
phayes@ihmc.us http://www.ihmc.us/users/phayes