RDF Miniserializations [from rdfweb-dev]

[Some out of date notes that I was preparing. I've actually gone a lot
further than this and implemented a schema-aware RDF editor, which I'm
just about to post about to rdfweb-dev. Figured that I'd send the
history to www-archive just for a laugh.]

Just a bunch of notes. I've been wondering about really quick
languages for scribbling down RDF, and I figured that your email was a
good seed for some of those ideas, but that it'd take it off-topic for
rdfweb-dev, hence www-archive.

I'm essentially wondering what happens when you create a language
that's more abbreviated than N3, easier to scribble, has less baggage
but probably ends up being less expressive, or difficult to learn and
use.

> (loaded as a bunch of standard defs)
> Person = http://xmlns.com/foaf/0.1/Person
> name = http://xmlns.com/foaf/0.1/name
> nick = http://xmlns.com/foaf/0.1/nick
> knows = http://xmlns.com/foaf/0.1/knows

One of the proposals for Notation3, and something that I used in N3S,
is the following syntax:

   @use Person, name, nick, knows
      <http://xmlns.com/foaf/0.1/>  .

Which is very similar to Python import syntax!

   from http://xmlns.com/foaf/0.1/ import
      Person, name, nick, knows.

Of course.

> (at command line)
> Person->
> name-> Dan Brickley
> nick-> danbri
> knows->
> Person->
> name-> Libby Miller
> nick-> libby

I realise that this was just a very quick sketch of what you'd like to
be able to achieve, but it has an interesting mix of nice features and
practical problems that I'd like to investigate. The obvious thing
missing is typing--I suppose everything's typed as a URI if it's
recognized from the config file, though, and typed as a literal
otherwise.

It appears that the "->" things are actually redundant. But this
current syntax assumes striping. It shows you how to descend into new
objects, but not get out of them ("<-", perhaps?). Just try adding
another property to the danbri Person root node...

   nick-> libby
   <-
   email danbri@example.org

And what happens if you want to use classes as subjects/objects in the
graph itself, rather than to type? For example, if I wanted to type
:Person rdf:type rdfs:Class. Would I have to put the statement on a
single line to denote that? In other words:

   Person->
   type-> Class

becomes

   [ a :Person; rdf:type rdfs:Class ] .

but

   Person type-> Class

becomes

   :Person rdf:type rdfs:Class .

It gets quite confusing quite quickly, but I like the principle of
easy RDF creation.

What I'd like to be able to do is load the names in from schemata
automatically. Seems like that's why we have a Semantic Web in the
first place... to put machine readable data up on the Web. You could
specify a list of cascading preferred schemata, so that if there are
duplicate terms in different ones the one with the higher preference
wins. But this may have the "import * from x" problem.

--
Sean B. Palmer, <http://purl.org/net/sbp/>
"phenomicity by the bucketful" - http://miscoranda.com/

Received on Wednesday, 15 October 2003 11:29:39 UTC