- From: Stefan Decker <stefan@db.stanford.edu>
- Date: Tue, 29 Feb 2000 14:04:08 -0800
- To: haustein@kimo.cs.uni-dortmund.de, www-rdf-interest@w3.org
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