Hi Claude,

On 01/09/13 08:36, Claude Warren wrote:
I am a bit confused.  I was under the impression that a predicate had to be
a URI (not anon and not literal) node.  This seems to be enforced by the
graph writing code but not by the graph code itself. Should not the graph
code thrown an exception when a non-URI node is used as a predicate?  Or is
the writer too strict?

It is the Model/Statement layer which enforces "syntactic" constraints like that, plus the writers.

The Graph/Triple/Node storage layer deliberately omits those checks, implementing what some people call "generalized RDF".

This has several benefits. It keeps the storage layer uniform and simple, it allows the reasoners to construct intermediate results which are outside the RDF model constraints, it allows for possible change to the RDF model. In particular the notion of allowing bnodes as predicates was discussed and postponed at the previous round of standardization and has certainly been discussed in the current round (especially in the context of JSONLD) - though I don't know its current status.

Dave

Reply via email to