Re: rdf newbie

Ursula Bartels wrote:
> Hi,
> 
> I'm working for the project 1dok.org. there we proposed our
"extensible hierarchical meta data model".
> That means a hierarchical system of document classes which starting
from a 1dok basic document.
> Now i try to implement this model into RDFS.
> 
> For the first class "EinsdokBasisdokument" it looks like this:
> 
> 
> <!--
>    Top level class 'EinsdokBasisdokument'
> -->
> 	<rdfs:Class rdf:ID="EinsdokBasisdokument"/>
> 	<!-- 
>     Properties specific to EinsdokBasisdokument
> -->
> 	<rdfs:Property rdf:ID="Dokumenttyp">
> 		<rdfs:domain rdf:resource="#EinsdokBasisdokument"/>
> 		<rdfs:range rdf:resource="#Literal"/>
> 	</rdfs:Property>
> 	<rdfs:Property rdf:ID="ErstellerName">
> 		<rdfs:domain rdf:resource="#EinsdokBasisdokument"/>
> 		<rdfs:range rdf:resource="#Literal"/>
> 	</rdfs:Property>
[snip]
> 	<!-- 
>    SubProperty specific to ErstellerName
> -->
> 	<rdfs:Property rdf:ID="Name">
> 		<rdfs:subPropertyOf rdf:resource="#ErstellerName"/>
> 	</rdfs:Property>
> 	<!-- 
>   Propertyies specific to  Name
> -->
> 	<rdfs:Property rdf:ID="Anrede">
> 		<rdfs:domain rdf:resource="#Name"/>
> 		<rdfs:range rdf:resource="#Literal"/>
> 	</rdfs:Property>
[snip]
> </rdf:RDF>
> 

> But i am not happy with this. i am not sure that i can give a
 > subproperty properties with the
> according domain. or perhaps is it possible to declare a subproperty
> as a class again (with attributes respectively
> properties in RDFS)? Thanks for help!!!!

Two minor points: First, Property is in the rdf namespace, so it's 
"rdf:Property". Second, it might be a good idea to modify the 
capitalization. It is sort of customary (though not obligatory of 
course) to start class names with a capital, and property names with a 
lower-case letter. That way it is easier to keep them apart.

It seems that in your modeling there is a mixup between classes and 
properties. Specifying properties of properties in this fashion does not 
really work, because you can not identify which specific instance of the 
property you want to say something about.

For example, suppose we instantiate the class EinsdokBasisdokument with 
an object foo that has as name "Foo bar":

   my:foo rdf:type my:EinsdokBasisdokument.
   my:foo my:Name "Foo Bar".

If I understand your model correctly, I suppose that at this point you 
would like to use e.g. the "Anrede" property to say something about this 
*particular* Name, but that is not possible using the above 
construction. You have no identifier to point to this *particular* 
property, and besides, the domain of "Anstelle" is the class "Name", 
which is not the same thing as the property "Name".

I'd say that if you wanted to do this (properties of properties), you'd 
have to resort to using reification instead.

Either that or create an object of type Name on which you can then 
declare several properties of names. Something like this:

....
<rdfs:Class rdf:ID="ErstellerName"/>
<rdfs:Class rdf:ID="Name">
   <rdfs:subClassOf rdf:resource="#ErstellerName"/>
</rdfs:Class>

<rdf:Property rdf:ID="erstellerName">
    <rdfs:domain rdf:resource="#EinsdokBasisdokument"/>
    <rdfs:range rdf:resource="#ErstellerName"/>
</rdf:Property>
<rdf:Property rdf:ID="name">
    <rdfs:subPropertyOf rdf:resource="#erstellerName"/>
    <rdfs:range rdf:resource="#Name"/>
</rdf:Property>

<rdf:Property rdf:ID="anrede"/>
    <rdfs:domain rdf:resource="#Name"/>
    <rdfs:range rdf:resource="#Literal"/>
</rdf:Property>
...


I hope this helps.

Jeen
-- 
jeen.broekstra@aidministrator.nl
aidministrator nederland bv - http://www.aidministrator.nl/
julianaplein 14b, 3817 cs amersfoort, the netherlands
tel. +31-(0)33-4659987, fax. +31-(0)33-4659987

Received on Friday, 6 December 2002 06:54:00 UTC