Re: Generated RDF conformant with good practise?

Matt Halstead writes:

> 
> >> <?xml version="1.0" encoding="UTF-8"?>
> >> <rdf:RDF xmlns:bibterm="http://www.book-stuff.com/terms/"
> >>          xmlns:dc="http://purl.org/dc/elements/1.0/"
> >>          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
> >>     <bibterm:Bib>
> >>          <bibterm:book rdf:parseType="Resource">
> >>                  <bibterm:year>1994</bibterm:year>
> >>                  <dc:title>TCP/IP Illustrated</dc:title>
> >>          </bibterm:book>
> >>          <bibterm:book rdf:parseType="Resource">
> >>                  <bibterm:year>1992</bibterm:year>
> >>                  <dc:title>Advanced Programming in the Unix
> >> environment</dc:title>
> >>          </bibterm:book>
> >>      </bibterm:Bib>
> >> </rdf:RDF>
> 
> 
> This is a good example of something I have wondered about.  If in fact 
> one wanted to create an RDF schema to describe such a structure, then 
> it would be nice to be able to describe that the range of bibterm:book 
> is any resource that has the properties bibterm:year and dc:title.  Is 
> it possible to do this without making a class to represent that, or 
> using the syntax and semantics of OWL?  I.e. is it possible in plain 
> RDF/RDF-S to say that the properties of bibterm:year and bibterm:title 
> are sufficient for a resource to be a valid instance?  if not, then 
> perhaps it is worth considering a non-anoymous resource for this 
> relationship so that one can still define the architecture of the 
> bibterm:book property in RDF/RDF-S semantics.

Anonymous classes are fine. It's anonymous Properties that aren't
allowed. Aside from that, there's no significant difference between an
blank node and a URI-labeled node.

I think what you're saying can be represented like this (in the Turtle
syntax for RDF):

    bibterm:book a owl:ObjectProperty
        ; rdfs:range
            [ a owl:Class
            ; rdfs:subClassOf
                [ a owl:Restriction
                ; owl:onProperty bibterm:year
                ; owl:minCardinality 1
                ]
            ; rdfs:subClassOf
                [ a owl:Restriction
                ; owl:onProperty dc:title
                ; owl:minCardinality 1
                ]
            ]
        .

This says that the range of bibterm:book is a class whose instances have
at least one value for bibterm:year and dc:title.

In this example, though, I can't think of a reason not to just declare
the range of bibterm:book to be bibterm:Book or something.
-- 
David Menendez <zednenem@psualum.com> <http://www.eyrie.org/~zednenem/>

Received on Monday, 20 September 2004 00:48:31 UTC