CURIE syntax thoughts + @instanceof semantics

Hi guys,

just try to share some line of thoughts that (1) came to my mind related
to edge cases of the CURIE syntax and (2) gave me some new ideas related
to @instanceof. (I hope I could catch your attention:-)

1. At present, my reading of the CURIE syntax grammar is that the
following is illegal:

@attribute="prefix:"

Ie, what is called a "reference" in the syntax is _required_. My first
question is: why? Why can't we say that the value of "prefix:" is, well,
the URI that is defined for the prefix? Is there any fundamental reason
for that?

2. If moved along the line of #1 and if we accepted, for a moment, that
a "prefix:" is a legal CURIE, then the next problem is to define what
the meaning of "_:" is. Well, there seems to be a perfectly valid answer
for that: this is a unique identifier chosen by the implementation with
the restriction that _each_ occurrence of "_:" is a _different_ unique
identifier. In RDF terms this means that each occurrence of "_:" is a
_different_ blank node.

3. How does this affect @instanceof? As I see the issue now is to define
unambiguously when an @instanceof generates a new (subject) BNode and
when not. At least, as far as I am concerned, this is still the
outstanding and somewhat muddy issue. So what if, instead, we say:

- accept the CURIE edge cases #1 and #2
 an abbreviation for- there is _no_ exception for @instanceof, ie, it
behaves _exactly_ like <... @rel="rdf:type" @resource="THE TYPE CURIE"/>

Ie, if we have

<div about="#a"><span instanceof="a:b"/></div>

it generates

<#a> rdf:type a:b.

If we have a hanging rel

<div about="#a" rel="q:w"><span instanceof="a:b"/></div>

then we get

<#a> q:w [ rdf:type a:b ].

Etc. But what about Ben's use case in [1]? Remember that he has
something like

<div about="#me" rel="foaf:knows">
   <span property="foaf:name"
          instanceof="foaf:Person">Ralph</span>
   <span property="foaf:name">Jeni</span>
 </div>

and the use case would require to get, somehow,

<#me> foaf:knows
    [ a foaf:Person; foaf:name "Ralph" ];
    [ foaf:name "Jeni" ].

and this is achieved currently by some extra rule whereby the
@instanceof, in some circumstances, would generate an extra blank node,
replacing the one to be used for the hanging @rel of the parent. Well,
this would indeed require a tiny change, but which I do not find so bad:


<div about="#me" rel="foaf:knows">
   <span about="[_:]" property="foaf:name"
          instanceof="foaf:Person">Ralph</span>
   <span property="foaf:name">Jeni</span>
 </div>

Which would yield the triples about without requiring any new rule and,
which is important, would be still copy-pastable (sorry for the English
neologism:-). I think the copy-pastable nature is the main requirement
here, that is why using something like @about="[_:q1]" in the first span
would not be ideal.

There is a small price to pay with the somewhat cryptic [_:] thing
(though I do not expect to come up frequently in practice) but I somehow
feel that the model would remain very clean, more easily describable and
implementable.

Thoughts?

Ivan

P.S. Ralph told me on the phone that a possible change is to use @src to
generate the current subject and not the object, thereby solving the
other hanging issue of @instanceof. I think this is a perfect solution
indeed!

[1] http://www.w3.org/2006/07/SWD/RDFa/impl/js/test.html

-- 

Ivan Herman, W3C Semantic Web Activity Lead
Home: http://www.w3.org/People/Ivan/
PGP Key: http://www.ivan-herman.net/pgpkey.html
FOAF: http://www.ivan-herman.net/foaf.rdf

Received on Sunday, 16 December 2007 10:17:15 UTC