W3C home > Mailing lists > Public > www-rdf-interest@w3.org > January 2005

Re: a simpler form of rdf xml

From: Henry Story <henry.story@bblfish.net>
Date: Fri, 14 Jan 2005 15:10:21 +0100
Message-Id: <0722933A-6636-11D9-9C7C-000A95D9FA7A@bblfish.net>
Cc: www-rdf-interest@w3.org, Phil Dawes <pdawes@users.sourceforge.net>
To: jsled@asynchronous.org


On 13 Jan 2005, at 16:25, Josh Sled wrote:
> On Thu, 2005-01-13 at 03:52, Phil Dawes wrote:
>
>> I've written a script (to test the idea) that does pretty-much the
>> same translation - if you're interested I'll stick it on the web
>> somewhere when I get to work.
>
> Nice.  It looks like you go strictly to blank nodes, and have the
> "element = property" and "non-leaf-elements are blank-nodes" heuristic.

So that differs from my mapping [1] in that for me elements and  
attributes
are always mapped to a relationship between blank nodes. This then  
allows
a combination of information from an ontology and well defined graph  
inferencing
to get me to the final state.


>> N.B. I think it'd also need to handle ordered collections to be
>> generically useful (since xml is implicitly ordered).
>
> Yeah, it seems like the pain is to deal with:

I agree. This is a good problem to raise.

>
> <foo>
>   <barProp>bar</barProp>
>   <bazProp>baz</bazProp>
>   <items>item1</items>
>   <items>item2</items>
> </foo>

my initial take on this is that we can do two things in the
mapping:

  - we can map as I have explained [1]
  - and we can add order information to the graph.

So I map the above to

[ :foo [ :barProp [ xxx:string "bar" ];
          :bazProp [ xxx:string "baz" ];
          :items   [ xxx:string "item1" ];
          :items   [ xxx:string "item2" ]
        ]
] .

which with an ontology that specifies that :barProp, :bazProp
and :items are relationships that map to things of type String
simplify to

[ :foo [ :barProp "bar";
          :bazProp "baz";
          :items   "item1";
          :items   "item2"
        ]
] .

or if we make the anonymous nodes explicit

_x :foo _f .
_f :barProp "bar".
_f :bazProp "baz".
_f :items "item1".
_f :items "item2".

Of course the original parse allowed us to add the following statements
(simplified a little)

{ _x :foo _f } :before  { _f :barProp "bar" }
{ _f :barProp "bar" } :before { _f :bazProp "baz" }
{ _f :bazProp "baz" } :before { _f :items "item1" }
{ _f :items "item1" } :before { _f :items "item2" }



>
> Since you don't want to have to tell people they need to insert another
> level...
>
> What about...
>
>   <foo is:aListOf="items">
>    <!-- ... -->
>   </>
> ?

And in the procedure I am describing there is no need for the  
rdf:aListOf
to appear directly in the xml. It sufficed that it be found in the  
ontology
in a statement saying that foo is a relation onto an object that is an
ordered list.

(This is nice because it clears up the xml a lot)

Now there should be a way, given some semantic information that :foo is
a list to use the sentence order information to create an ordered list  
object.
I don't understand rdf lists enough, but I don't see that it
should be impossible.

> Which, given the content above, becomes:
>
>   [ :foo [ :barProp "bar"; :bazProp "baz"
>          ; :items ( "item1" "item2" ) ] ].
>
> With namespace/qname handling as per:
>
>   <eg:foo is:aListOf="&eg;items">
>     <!-- ... -->
>   </>



>
> While I'm writing this out... another pain is striping and typing.   
> I've
> been thinking about something like...
>
>   <eg:foo is:a="&eg;Foo" />
>
> ...with an alternative being...
>
>   <eg:foo is:a="&eg;Foo">
>     <is:a>&eg2;Bar</is:a>
>   </>

For me that is easy. I find that information in the ontology. But if
people want to be explicit they can always use rdf:type="sometype"
  or
    <rdf:type>http://example.com/sometype</rdf:type>
    <rdf:type>http://example.com/someOtherType/rdf:type>

> ... with the motivation that anything needing to represent _two_
> rdf:types can deal with the weirdness the above presents.
>
> Also, I guess you adopt `is:about="..."` for subjects, and `is:at` for
> resource-objects.
>
> Oh yeah, and there's no option to put anything in attributes.  It's all
> in elements, except as per above.

I think my system works well with attributes? No?

> Thoughts?
>
> ...jsled
>
> --  
> http://asynchronous.org/ - `a=jsled; b=asynchronous.org; echo  
> ${a}@${b}`
>

[1] See the email archived on the bloged mailing list
  that did the best job at keeping the ascii diagrams intact:
  <https://bloged.dev.java.net/servlets/ReadMsg?list=users&msgNo=441>
I also wrote a condensed, and perhaps even clearer version here:
   
<http://lists.w3.org/Archives/Public/www-rdf-interest/2005Jan/ 
0090.html>
Received on Friday, 14 January 2005 14:10:28 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:52:12 GMT