- From: Franconi Enrico <franconi@inf.unibz.it>
- Date: Tue, 13 Aug 2019 07:53:48 +0000
- To: Diogo FC Patrao <djogopatrao@gmail.com>
- CC: "Young,Jeff (OR)" <jyoung@oclc.org>, Daniel Hernandez <daniel@degu.cl>, "semantic-web@w3.org" <semantic-web@w3.org>
- Message-ID: <2AC77059-8B2A-4FE1-B566-699049C086D8@inf.unibz.it>
The situation is slightly more complex than that.
NULL values in standard SQL are exactly defined as letting any equality involving a NULL value fail.
Note that the string 'NULL' represents a NULL value, namely if you type the string NULL into a cell of type STRING then it is understood to be a NULL value.
This is where the implementors failed: a NULL value is never equal to itself.
This can be understood with the following standard SQL example (try it!).
With the database:
TABLE: col1 | col2
-----+-----
a | b
b | NULL
the query (meant to be the identity query, namely returning the input table itself):
SELECT * FROM TABLE
WHERE TABLE.col1 = TABLE.col1 AND TABLE.col2 = TABLE.col2 ;
gives the result:
col1 | col2
-----+-----
a | b
In SQL, the query above returns the table TABLE if and only if the table TABLE does not have any NULL value, otherwise it returns just the tuples not containing a NULL value, i.e., in this case only the first tuple <a,b>. Informally this is due to the fact that a SQL NULL value is never equal (or not equal) to anything, including itself. This is because a SQL NULL value represents the absence of a value.
Note that this is where SQL NULL values are radically different from RDF bnodes. Indeed a bnode is EQUAL to itself but different from any other bnode. This is because a RDF bnode represents the existence of an unknown value.
--e.
Il giorno 12 ago 2019, alle ore 16:41, Diogo FC Patrao <djogopatrao@gmail.com<mailto:djogopatrao@gmail.com>> ha scritto:
Vanity license plates in USA are strings, right? Then this problem would only happen if NULL='NULL', which is not.
It could be that the private company stored 'NULL' instead of NULL to the unassigned tickets, but that's really bad coding/design (and easy to fix, I guess).
Or maybe the DAO wrongly translate NULL to 'NULL' at some point.
Cheers
dfcp
--
diogo patrão
On Mon, Aug 12, 2019 at 11:11 AM Young,Jeff (OR) <jyoung@oclc.org<mailto:jyoung@oclc.org>> wrote:
Here’s an example showing blank nodes being used to declare the place of birth is unknown in Wikidata:
https://w.wiki/6$y
In the UI, it is rendered like this:
<image001.png>
Jeff
From: Daniel Hernandez <daniel@degu.cl<mailto:daniel@degu.cl>>
Date: Monday, August 12, 2019 at 9:42 AM
To: "semantic-web@w3.org<mailto:semantic-web@w3.org>" <semantic-web@w3.org<mailto:semantic-web@w3.org>>
Subject: [External] Re: The Joy of NULLs (not)
Resent-From: <semantic-web@w3.org<mailto:semantic-web@w3.org>>
Resent-Date: Monday, August 12, 2019 at 9:37 AM
As Enrico pointed, blank nodes can be used to represent unknown values.
An example of this use is Wikidata. I don't know another example.
--
Daniel
On Mon, 12 Aug 2019 07:36:41 +0000
Franconi Enrico <franconi@inf.unibz.it<mailto:franconi@inf.unibz.it>> wrote:
> Mike, this could easily happen in an RDF world if you register a
> vanity licence plate with anything starting with "_". Indeed, bnodes
> would be the right way to represent unknown but existing plates. --e.
>
> Il giorno 11 ago 2019, alle ore 23:10, Michael F Uschold
> <uschold@gmail.com<mailto:uschold@gmail.com><mailto:uschold@gmail.com<mailto:uschold@gmail.com>>> ha scritto:
>
>> This is hilarious. It could never happen in an RDF world! No value,
>> no triple.
>>
>> He tried to prank the DMV. Then his vanity license plate backfired
>> big time.
>> https://mashable.com/article/dmv-vanity-license-plate-def-con-backfire/<http://flip.it/NIk7FD>
Received on Tuesday, 13 August 2019 07:54:17 UTC