Triple-terms only as object of rdf:nameOf triples?

Following up on the discussions in yesterday's meeting, I was thinking that we could actually keep RDF1.2 as a "set of triples", instead of going for "set of triples and set of edges", while keeping things simple by imposing some restrictions on triple-terms and their use (in N-Triple) as explained below.

Equivalence:
===========
As I noted in yesterday's meeting, the following two are just different ways of expressing the same thing:
       :e | :s :p :o .                                      # A) uses a special 4th component --> "name"
       :e rdf:nameOf << :s :p :o >> .   # B) has three components at top-level, but uses a complex term, called "triple-term", as the object

Restrictions for Simplicity:
=====================
We could go with option B (in N-Triple), but keep things simple by imposing the following restrictions on triple-terms and their use:

  *
No Nesting: None of the components of a triple-term can be a triple-term.
  *
Only as Object: A triple-term can only appear in the object position.
  *
Only in rdf:nameOf Triples: A triple-term can be used in only those triples that have the special property rdf:nameOf as predicate.

Note that these restrictions do not constrain expressive power in any way because we can always get a name (e.g., :e) for a triple-term from an rdf:nameOf  triple and we can use that name as as an ordinary term (restricted to use as subject or object).

Thanks,
Souri.

Received on Friday, 19 January 2024 12:42:39 UTC