Re: Model-specific identity for anon resources, and its representation: A new issue?

> In a nutshell: there is no way as far as I can tell to represent
>
>    _:a1 <http://random.ioctl.org/#p1> _:a2 .
>    _:a2 <http://random.ioctl.org/#p2> _:a1 .
>
> in the current RDF serialisation. In other words, while we might* have
> the notion that an anonymous resource has an identity wrt (the RDF graph
> it is a part of), there is no way to reflect that identity except in the
> most trivial acyclic cases. And not all of those, either: an acyclic
> example that we can't represent is
>
>    <http://random.ioctl.org/#feh> <http://random.ioctl.org/#p1> _:a1 .
>    <http://random.ioctl.org/#yip> <http://random.ioctl.org/#p1> _:a1 .
>
> [Initially I had thought that that was what rdf:id was for; it turns out
> that it isn't]

We can imagine that anounymous terms are identified 'by their content'
e.g. see "more N-triples (Was RDF Statements as floating Cons Cells)"
http://lists.w3.org/Archives/Public/www-rdf-logic/2001Jun/0191.html
elaborating on that
[[[
  If an arc points to an anonymous term, then it
  is there 'by value' so to speak (not 'by reference').
  Of course one could point to constant terms
  and universally quantified terms used in those
  subgraphs, but they are 'leafs' or at the 'subgraph
  boundaries' so to speak.
]]]

Let's start with
  _:a1 <http://random.ioctl.org/#p1> _:a2 .
  _:a2 <http://random.ioctl.org/#p2> _:a1 .

If you point to _:a1 via e.g.
  <http://random.ioctl.org/#s3> <http://random.ioctl.org/#p3> _:a1 .
you can see how Euler copes with such content

////////////////////////////////////////////////////////////////////////////////
C:\n3>java Euler -trace -core testjan.nt testjan.nt
[1]CALL: <http://random.ioctl.org/#s3> <http://random.ioctl.org/#p3> [ <http://r
andom.ioctl.org/#p1> _:a2; <http://random.ioctl.org/#p1> _:a2].
[1]EXIT: <http://random.ioctl.org/#s3> <http://random.ioctl.org/#p3> [ <http://r
andom.ioctl.org/#p1> _:a2; <http://random.ioctl.org/#p1> _:a2].
# Generated with Euler 26.064 on Thu Jun 14 11:50:28 CEST 2001
#
# @prefix log: <http://www.w3.org/2000/10/swap/log#>.
# <http://random.ioctl.org/#s3> <http://random.ioctl.org/#p3> [ <http://random.i
octl.org/#p1> _:a2; <http://random.ioctl.org/#p1> _:a2].

@prefix log: <http://www.w3.org/2000/10/swap/log#>.

<http://random.ioctl.org/#s3> <http://random.ioctl.org/#p3> [ <http://random.ioc
tl.org/#p1> _:a2; <http://random.ioctl.org/#p1> _:a2].

# Proof found for file:/n3/testjan.nt in 1 steps (127 steps/sec)
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
which is 1 statement (and we actually should not repeat identical
descriptions @@)

Let's take the second case
  <http://random.ioctl.org/#feh> <http://random.ioctl.org/#p1> _:a1 .
  <http://random.ioctl.org/#yip> <http://random.ioctl.org/#p1> _:a1 .
That's indeed pointing to empty content
(and Euler should not throw a nullpointerexception for that @@)
As soon as you 'fill' it with e.g.
  _:a1 <http://random.ioctl.org/#p1> "jan".
you get

////////////////////////////////////////////////////////////////////////////////
C:\n3>java Euler -trace -core testjan2.nt testjan2.nt
[1]CALL: <http://random.ioctl.org/#feh> <http://random.ioctl.org/#p1> [ <http://
random.ioctl.org/#p1> "jan"; <http://random.ioctl.org/#p1> "jan"].
[1]EXIT: <http://random.ioctl.org/#feh> <http://random.ioctl.org/#p1> [ <http://
random.ioctl.org/#p1> "jan"; <http://random.ioctl.org/#p1> "jan"].
[2]CALL: <http://random.ioctl.org/#yip> <http://random.ioctl.org/#p1> [ <http://
random.ioctl.org/#p1> "jan"; <http://random.ioctl.org/#p1> "jan"].
[2]EXIT: <http://random.ioctl.org/#yip> <http://random.ioctl.org/#p1> [ <http://
random.ioctl.org/#p1> "jan"; <http://random.ioctl.org/#p1> "jan"].
# Generated with Euler 26.064 on Thu Jun 14 12:12:36 CEST 2001
#
# @prefix log: <http://www.w3.org/2000/10/swap/log#>.
# <http://random.ioctl.org/#feh> <http://random.ioctl.org/#p1> [ <http://random.
ioctl.org/#p1> "jan"; <http://random.ioctl.org/#p1> "jan"].
# <http://random.ioctl.org/#yip> <http://random.ioctl.org/#p1> [ <http://random.
ioctl.org/#p1> "jan"; <http://random.ioctl.org/#p1> "jan"].

@prefix log: <http://www.w3.org/2000/10/swap/log#>.

<http://random.ioctl.org/#feh> <http://random.ioctl.org/#p1> [ <http://random.io
ctl.org/#p1> "jan"; <http://random.ioctl.org/#p1> "jan"].
<http://random.ioctl.org/#yip> <http://random.ioctl.org/#p1> [ <http://random.io
ctl.org/#p1> "jan"; <http://random.ioctl.org/#p1> "jan"].

# Proof found for file:/n3/testjan2.nt in 2 steps (53 steps/sec)
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
which is 2 statements

So I think both cases are representable in RDF, no?

--
Jos De Roo, AGFA http://www.agfa.com/w3c/jdroo/

Received on Thursday, 14 June 2001 06:31:26 UTC