Print

Print


I also couldn't come up with a non awkward way to put it without going into
the  issues of scope and  datasets (hence the weasel words).

Blank nodes are syntactic lemon juice.
 On Nov 18, 2014 1:36 PM, "[log in to unmask]" <[log in to unmask]> wrote:

> > Blank node identifiers are essentially variables (in SPARQL they are an
> alternative syntax for variables)…
>
> I dont think this is wrong, but in my experience it is more common to
> think of blank nodes as specifically existentially-bound variables with a
> scope that is the document in which they are found. So the triple:
>
> _:x :favoriteEggType :Chicken .
>
> makes the assertion, "There exists a thing, to which we will refer as
> '_:x', but only inside this document, the :favoriteEggType of which is
> :Chicken". If we see in the same document:
>
> _:y a :Farmer .
> _:y :hates _:x .
>
> We can read "There exists a thing, to which we will refer as '_:y', but
> only inside this document, which is a :Farmer, and which :hates the thing
> to which, only in this document, we are referring to as '_:x'".
>
> Or if we see:
>
> _:x :fears _:z .
>
> And _:z doesn't appear as the subject of a triple in our document, we can
> read "There is a thing that, just inside this document, we will call '_:z',
> and the :Weasel that inside this document we call '_:x' :fears '_:z'", and
> so on. Because of the lack of a unique name assumption for RDF, it is not
> defined whether the :Weasel :hates the :Farmer, or someone else entirely.
>
> That is all rather awkward reading, and this is a well-known complaint
> about blank nodes. Existential qualifiers are useful, but in mass they can
> become confusing. It is like listening to a story told by someone who
> cannot remember anyone's name. Often RDF isn't meant for human consumption
> anyway, but analogous problems occur in machine processing. For example, as
> Thomas Berger remarked:
>
> > In practice this matters when one wants to add or remove individual
> statements or subgraphs from graphs: When the graphs or subgraphs have
> blank nodes as their origin, you usually can't.
>
> Often you can't because it is very difficult to calculate exactly what
> changes you are making in the possible interpretations of the graph. Simon
> Spero's example shows that: we don't, as he says, know how many :Weasels we
> actually have. And once we are no longer in the scope of our original
> document, we can only refer to a :Weasel by some kind of query. If the
> attributes of :Weasels don't support queries that will identify them
> uniquely, we more-or-less lose track of them. This is bad if, for example,
> we discover new information about our :Weasels and would like to record it
> in a useful way.
>
> There are occasionally good reasons to use blank nodes, but here:
>
> http://richard.cyganiak.de/blog/2011/03/blank-nodes-considered-harmful/
>
> are some cautionary remarks about them from Richard Cyganiak, one of the
> editors of the RDF standards.
>
> ---
> A. Soroka
> The University of Virginia Library
>
> On Nov 18, 2014, at 12:06 PM, Simon Spero <[log in to unmask]> wrote:
>
> > On Nov 18, 2014 11:13 AM, "Joseph Kiegel" <[log in to unmask]>
> wrote:
> >
> > >
> > > In RDF 1.1 Concepts and Abstract Syntax, section 3.4, we find:  "Blank
> node identifiers . are always locally scoped to the file or RDF store, and
> are not persistent or portable identifiers for blank nodes".  [...] Isn't
> it true, then, that blank node identifiers, which are valid at Library A,
> are not defined when they get to Library B?  This seems like a problem.
> > >
> > > Is the use of blank nodes consistent with BIBFRAME's function as a
> carrier?
> >
> > What the specification means is that a blank node _:x that refers to
> some thing in an RDF file transferred from A to B may not  refer to the
> same thing except during in the one use of that file.
> >
> > It may not be the name of the thing in the stores at A *or* B, and if
> the same file is ingested twice, it could refer to two different things
> that happen to have the same values for the stated properties.
> >
> > Blank node identifiers are essentially variables (in SPARQL they are an
> alternative syntax for variables)...
> >
> > Suppose we have the following file:
> > ---------------
> > _:x rdf:type :Weasel.
> > _:x :favoriteEggType :Chicken .
> > ----------------
> >
> > This says that there is something that is a Weasel and whose favorite
> type of egg is Chicken.
> >
> > If we see this twice, we cannot tell how many chicken pickin Weasels we
> have.
> >
> > A different file could use _:x to refer to some Chicken.
> >
> > Simon
> >
>