Re: UNSAID drafted and mapped to SQL

>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
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.


>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
>                     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', 
>INSERT INTO holds (s, p, o) VALUES ('_:a', 'foaf:workplaceHomepage', 
>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', 
>INSERT INTO holds (s, p, o) VALUES ('_:c', 'foaf:workplaceHomepage', 
>-- 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> |
>-- +-------+--------------------------+
>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)
>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

Received on Sunday, 19 December 2004 05:59:29 UTC