Re: [newbie] domain or subPropertyOf in PhotoRDF schema

[Richard Cyganiak]

> I'm puzzled by some RDFS constructs in the W3C's Photo RDF note [1].
>
> I'm new to RDF and RDFS, so I thougt I would ask here for help.
>
> The Photo RDF technical schema [2] states (shortened):
>
> |  <Class rdf:ID="Technical-data">
> |    <comment xml:lang="en">
> |      A class that represents technical data about a photo
> |    </comment>
> |  </Class>
> |
> |  <rdf:Property rdf:ID="camera">
> |    <comment xml:lang="en">Brand and type of camera</comment>
> |    <domain rdf:resource="#Technical-data"/>
> |  </rdf:Property>
>
> Note the domain property of #camera.
>
> Later [3], the camera property is used on a photo.
>
> My feeling is that <subPropertyOf/> should have been used instead of
> <domain/> (and Technical-data should be a property, not a class). Is this
an
> inaccuracy in the Photo RDF note, or am I somehow mistaken? Does it matter
> at all?

This is a question of modeling, and depends on what you consider to be a
primary concept.  In this case, the modelers seem to have considered
"Technical Data" as a concept in its own right. Therefore, it becomes a
Class, and has properties.  "camera" is considered to be, not a kind of
Technical Data - so it is not a subclass - but one facet of Technical Data -
so it becomes a property.

If you made Technical Data into an abstract property, and made each of the
facets that are currently properties into a subproperty of Technical Data,
then there would be no unified package of technical data that could be
attached to a photo.  Instead, there would just be a collection of separate
subproperties attached.  You could of course extract them into a body by
looking for all the statements whose predicate is a subproperty of Technical
Data.

Not only would this take more computation, but you would be creating a
package or collection anyway.  So why not create the notion of that package
in the first place?

This approach has come up with a non-intuitive role for a camera - that is,
we can be mislead by the label "camera" - which we would normally think of
as a Class itself.  But here, "camera" means information about the photo,
namely, what thing actually imaged the scene.  Suppose we have a class
Camera, which is supposed to be an actual physical camera.  To make this
more clear we could, if we cared to, say something like

{camera rfds:domain Technical Data}
{camera rdfs:range Camera}

(except that in this application we also want to be able to just use string
literals for the value of "camera").

Notice that the Dublin Core items (like "publisher") are also Properties.
"camera" is used in an analogous way.

Cheers,

Tom P

Received on Sunday, 11 May 2003 12:41:32 UTC