- From: Peter F. Patel-Schneider <pfpschneider@gmail.com>
- Date: Mon, 25 Mar 2024 15:21:52 -0400
- To: public-rdf-star-wg@w3.org
Enrico's example is flawed, in part because DBs don't store identifiers in most columns, they only store literals. So the table is better shown as: BIRTH-CERTIFICATE +-----+----------+----------+------+ | ID | name | location | date | +-----+----------+----------+------+ | :b1 | "enrico" | "rome" | 1962 | | :b2 | "mary" | "rome" | 1962 | | :b3 | "enrico" | "rome" | 1980 | | :b4 | "mary" | "rome" | 1980 | | :b5 | "enrico" | "milan" | 1962 | | :b6 | "mary" | "milan" | 1962 | | :b7 | "enrico" | "milan" | 1980 | | :b8 | "mary" | "milan" | 1980 | +-----+----------+----------+------+ As well, there is the possibility of different birth certificates whose name, location, and date are the same so there is no alternate key Primary Key: ID peter On 3/25/24 04:12, Franconi Enrico wrote: > I wish to insist on the meaningfulness of my example: > > << :b1 | :enrico :born-in :rome >> :date 1962 . > << :b1 | :enrico :born-on 1962 >> :location :rome . > > Please read on to understand my argument. > > Suppose there is a database in the registry office: > > BIRTH-CERTIFICATE > +-----+---------+----------+------+ > | ID | name | location | date | > +-----+---------+----------+------+ > | :b1 | :enrico | :rome | 1962 | > | :b2 | :mary | :rome | 1962 | > | :b3 | :enrico | :rome | 1980 | > | :b4 | :mary | :rome | 1980 | > | :b5 | :enrico | :milan | 1962 | > | :b6 | :mary | :milan | 1962 | > | :b7 | :enrico | :milan | 1980 | > | :b8 | :mary | :milan | 1980 | > +-----+---------+----------+------+ > Primary Key: ID > Alternate Key: name, location, date > > It is important to notice that no pair among the three attributes > name,location,date is sufficient to identify a birth certificate. > Two departments decide to expose this data as LOD, but in different ways. > > Generated graph-1: > > << :b1 | :enrico :born-in :rome >> :date 1962 . > << :b2 | :mary :born-in :rome >> :date 1962 . > << :b3 | :enrico :born-in :rome >> :date 1980 . > > etc > > > Observe that they had to choose a different name for the attribute within the > context of the triple term: this is because the predicate :born-in in the > triple term relates the name of a person with its birth location, as opposed > the attribute :location which relates a birth certificate with the birth > location of the name of a person at a certain date. > > Similarly for the second department - they also changed the predicate :date to > :born-on: > > Generated graph-2: > > << :b1 | :enrico :born-on 1962 >> :location :rome . > << :b2 | :mary :born-on 1962 >> :location :rome . > etc > > > If we merge the two LOD graphs (set union): > > *<< :b1 | :enrico :born-in :rome >> :date 1962 .* > *<< :b1 | :enrico :born-on 1962 >> :location :rome .* > etc > > > which entails > > << :b1 | :enrico :born-in :rome >> :location :rome . > << :b1 | :enrico :born-on 1962 >> :date 1962 . > etc > > > ➡️ *Observe that even if it seems that there is redundant information, the > predicates are different (:born-in vs :location, and :born-on vs :date). This > is because they serve different purposes: one applies to the name of a person, > the other applies to a certificate.* > > I hope this clarifies: > > 1. the need to allow a reifier to reify two distinct triple terms; > 2. the possibility to express the same information in different ways. > > > cheers > —e. > >
Received on Monday, 25 March 2024 19:21:59 UTC