Re: rdf for object serialization

Hi,

this was indeed already discussed a few weeks ago.
See:
http://lists.w3.org/Archives/Public/www-rdf-interest/1999Dec/0113.html
http://lists.w3.org/Archives/Public/www-rdf-interest/1999Dec/0115.html
http://lists.w3.org/Archives/Public/www-rdf-interest/1999Dec/0147.html
http://lists.w3.org/Archives/Public/www-rdf-interest/2000Jan/0020.html

The discussion has not lead to a useful solution,  but i *needed* a 
solution for this problem
for the Protege RDF-storage infrastructure.
So my solution was to use facets for properties in a namespace "rdfutil" 
(which is preliminary)
which allows to define multiple domains and ranges.
A property can have multiple "facetResources", which defines a set of 
facets for the property separately.
In your example the property "child" would have two "facetResources", one 
for each domain.

The documentation of the rdfutil-namespace is in preparation (it contains 
also cardinality-constraints etc., which
were also needed for the protege-RDF serialization.

So the RDF-serialization of

>class Person {
>   String name;
>   Person child;
>}
>
>class Node {
>   Object content;
>   Node child;
>}
is (i omitted "content" and "name")


  <?xml version='1.0' encoding='ISO-8859-1'?>
<!-- Version Tue Feb 29 13:45:11 PST 2000 -->
<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:rdfs="http://www.w3.org/TR/1999/PR-rdf-schema-19990303#"
  xmlns:rdfutil="http://www.w3.org/rdfutil#">

  <rdfs:Class rdf:ID="#Node"/>

  <rdfs:Class rdf:ID="#Person"/>

  <rdfs:Property rdf:ID="child">
    <rdfutil:facets>
     <rdfutil:facetResource>
      <rdfutil:domain rdf:resource="#Node"/>
      <rdfutil:range rdf:resource="#Node"/>
     </rdfutil:facetResource>
    </rdfutil:facets>

    <rdfutil:facets>
     <rdfutil:facetResource>
      <rdfutil:domain rdf:resource="#Person"/>
      <rdfutil:range rdf:resource="#Person"/>
     </rdfutil:facetResource>
    </rdfutil:facets>

  </rdfs:Property>
<rdf:RDF>

-------------------------------------------------------------------------------

Please note that the property definition can be split into two separate 
definitions, thus
the Java-classes can be serialized interdependently (this is actually the 
approach used in Protege).

  <rdfs:Property rdf:ID="child">
    <rdfutil:facets>
     <rdfutil:facetResource>
      <rdfutil:domain rdf:resource="#Node"/>
      <rdfutil:range rdf:resource="#Node"/>
     </rdfutil:facetResource>
    </rdfutil:facets>
  </rdfs:Property>



  <rdfs:Property rdf:ID="child">
    <rdfutil:facets>
     <rdfutil:facetResource>
      <rdfutil:domain rdf:resource="#Person"/>
      <rdfutil:range rdf:resource="#Person"/>
     </rdfutil:facetResource>
    </rdfutil:facets>
  </rdfs:Property>


Ciao,

         Stefan





>Where serialzed instances should look like
>
><rdf xmlns:rdf="..."
>      xmlns="..."
>
>   <Person rdf:about="....">
>      <name>Harry Hacker</name>
>      <child rdf:"ressurce="...."/>
>   </Person>
>
>   <Node rdf:about="....">
>      <content rdf:ressource="..."/>
>      <child rdf:ressource="..."/>
>   </Node>
></rdf>
>
>
>AFAIK, that is not possible at all because in RDF the domain
>of a property is not part of the property
>name (in contrast to OOPL).
>
>So I could add the class name to the property name manually,
>but renaming child to Person-child and Node-child would
>look ugly in the RDF code and not meet the spirit of
>OOP. I could also use the RDF syntax for object
>serialization but ignore RDF schema.
>
>Does anybody have a good suggestions?
>
>Is there any special reason why the domain name is not part
>of the property name in RDF schema like in standard OOP?
>Or did I misread the specs? Is object serialization a
>relevant application of RDF?
>
>Best regards
>
>Stefan
>
>
>--
>Stefan Haustein
>University of Dortmund
>Computer Science VIII
>www-ai.cs.uni-dortmund.de

Received on Tuesday, 29 February 2000 17:03:10 UTC