# Re: Blank nodes as predicates Re: Blank Nodes Re: Toward easier RDF: a proposal

```In my 2nd year report PhD report I have a longer chapter on how RDF works with Institution
Theory (IT) [1].  In IT, which was developed by the late Goguen in order to reveal the
structure common to all logics - and so in particular of RDF.  The interesting thing is
that if one defines RDF in IT , it is easier to start with Signatures that contain only
IRIs - call that Signature S.  It turns out then to be extremely easy to add blank nodes by
a simple morphism from S to a signature S+X that is S with variables. This can be done
with all logics, and it seems is the way IT brings together existential and universal
quantification in one simple definition.

The interesting thing seems to be that when one does that, if one takes blank nodes to be
existential quantifiers, as I think we all do, then blank nodes fall out automatically in
predicate position too.

So this indicates two things:
- if you ever develop a language without existential quantifiers you automatically
have another language with existential quantifiers that falls out automatically
- that language has them in predicate position - though there is a note in the IT books
about some consequences of that which I need to look into.

I can post that chapter here where I go into detail if people are interested. My aim was to
write it so that it is easy enough to read by people with no background in IT or CT.  I would
need to fix up a number of typos that have been pointed out to me in the meantime, and see
if I can understand the asterisk pointed out about quantification over predicates that I saw
and see how that would apply to RDF.

Since we are thinking of changing RDF we are inevitably in IT land, as we are looking at
changes to the language, and so morphisms between languages.

Henry

[1] https://www.iep.utm.edu/insti-th/

> On 23 Nov 2018, at 01:31, Nathan Rixham <nathan@webr3.org> wrote:
>
> blank node identifiers in a surface syntax are a pita, issue causing, troublesome, discussion causing, skolemization causing
>
> as for blank nodes themselves, I see no issue personally, or reason to preclude them from any position in a triple - I'd rather have no IRI than a useless one.
>
> I can't remember ever seeing somebody say I want to have two json objects in a document that are the same json object but encoded and presented as two in that document, using some random identifier only valid to this serialization of the data to allow me to see they should be considered the same document, with x,y,z rules to combine them together and deserialize then reserialize, perhaps with skolemization of ... please no.
>
> Graph = Set of Triple
> Triple = Node, Node, Node
>
> Why complicate it further?
>
>
>
> On Thu, Nov 22, 2018 at 11:52 PM David Booth <david@dbooth.org <mailto:david@dbooth.org>> wrote:
> On 11/22/18 9:14 AM, Tim Berners-Lee wrote:
> >> On 2018-11 -22, at 13:54, Martin G. Skjæveland <martige@ifi.uio.no <mailto:martige@ifi.uio.no>> wrote:
> >> On 22/11/18 13:02, Tim Berners-Lee wrote:
> >>>> On 2018-11 -21, at 22:40, David Booth wrote:
> >>>> Blank nodes are special second-class citizens
> >>>> in RDF.  They cannot be used as predicates,
> >>> Agreed it messes up the symmetry.  Actually in most of my code you can use a blank node as a predicate.  That said, RDF is unusual in having as much symmetry.
> >>
> >> I like symmetry. Can we get a ✅ for blank nodes as predicates too?
> >
>
> Not so fast please.  While I fully agree with the symmetry objective, I
> think adding *more* blank nodes would be going in exactly the *wrong*
> direction.   We *do* need the convenience that blank nodes currently
> provide, but we *don't* need blank nodes themselves, as Skolem IRIs have
>
> IMO a much better route for *easier* RDF would be to *eliminate* blank
> nodes entirely -- or at least make them invisible to users -- while
> *still* retaining the convenience that they currently provide.  I think
> this is achievable, but it will require some creativity and careful
> engineering, to:
>
>   - Make IRIs *easy* to allocate; and
>
>   - Adopt higher-level RDF language constructs that eliminate or hide
> blank nodes.
>
> As you suggest in a separate message, I think the implicit blank node
> constructs of [] and () that N3 and Turtle provide are an excellent step
> toward meeting the second of these requirements.  But I don't think they
> are quite enough.
>
> David Booth
>
```

Received on Friday, 23 November 2018 07:53:01 UTC