Class or Property? Objectification in RDF and data modeling

14. August 2009 um 00:23 4 Kommentare

A short twitter statement, in which Ross Singer asked about encoding MARC relator codes in RDF, reminded me of a basic data modeling question that I am thinking about for a while: When should you model something as class and when should you model it as property? Is there a need to distinguish at all? The question is not limited to RDF but fundamental in data/information modeling. In Entity-relationship modeling (Chen 1976) the question is whether to use an entity or a relation. Let me give an example by two subject-predicat-object statements in RDF Notation3:

:Work dc:creator :Agent
:Agent rdf:type :Creator

The first statement says that a specific agent (:Agent) has created (dc:creator) a specific work (:Work). The second statement says that :Agent is a creator (:Creator). In the first dc:creator is a property while in the second :Creator is a class. You could define that the one implies the other, but you still need two different concepts because classes and properties are disjoint (at least in OWL – I am not sure about plain RDF). In Notation3 the implications may be written as:

@forAll X1, X2. { X1 dc:creator X2 } => { X2 a _:Creator }.
@forAll Y1. { Y1 a _:Creator } => { @forSome Y2. Y2 dc:creator Y1 }.

If you define two URIs for class and property of the same concept (the concept of a creator and creating something) then the two things are tightly bound together: Everyone who ever created something is a creator, and to be a creator you must have created something. This logic rule sounds rather rude if you apply it to other concepts like to lie and to be a liar or to sing and to be a singer. Think about it!

Beside the lack of fuzzy logic on the Semantic Web I miss an easy way to do „reification“ (there is another concept called „reification“ in RDF but I have never seen it in the wild) or „objectification“: You cannot easily convert between classes and properties. In a closed ontology this is less a problem because you can just decide whether to use a class or a property. But the Semantic Web is about sharing and combining data! What if Ontology A has defined a „Singer“ class and Ontology B defined a „sings“ property which refer to the same real-world concept?

Other data modeling languages (more or less) support objectification. Terry Halpin, the creator and evangelist of Object-Role Modeling (ORM) wrote a detailed paper about objectification in ORM whithout missing to mention the underlying philosophical questions. My (doubtful)
philosophic intuition makes me think that properties are more problematic then classes because the latter can easily be modeled as sets. I think the need for objectification and to bring together classes and properties with similar meaning will increase, the more „semantic“ data we work with. In many natural languages you can use a verb or adjective as noun by nominalization. The meaning may slightly change but it is still very useful for communication. Maybe we should more rely on natural language instead of dreaming of defining without ambiguity?


RSS feed for comments on this post. TrackBack URI

  1. coming from a python background, i lean towards applying duck-typing here, too: an object is just the set of it’s properties. if this makes it a duck in some context, and a non-vegetarian meal in another, fine. sort of „you are what you do“.

    so i guess, i wouldn’t go with classes in most cases.

    Comment by robert — 14. August 2009 #

  2. In terms of entities vs attributes, it seems like the obvious answer is that if the Thing is ever going to need to be described itself (have properties itself) then it should be an entity not an attribute. Right? Am I missing something? Does this hold to class vs. property too? Is it any more complicated than this?

    „Reification“ type approaches seem like ways to make something that had been originally modelled as an ‚attribute‘ _into_ an ‚entity‘ of it’s own. Does that seem so?

    Comment by Jonathan Rochkind — 18. August 2009 #

  3. PS:

    „What if Ontology A has defined a “Singer” class and Ontology B defined a “sings” property which refer to the same real-world concept?“

    Well, then we simply need an ontological description language where we can map from the property to the class, right? Property X with value x is equivalent to entity A. Can OWL do that? I have no idea. But it’s certainly do-able conceptually.

    Comment by Jonathan Rochkind — 18. August 2009 #

  4. I would argue that properties and classes are linked by the domain/range of the property. In OWL, of you assign a range of :Creator to the property dc:creator, a reasoner will automatically classify every individual that is the second argument of dc:creator as an instance of :Creator.

    RDFS gets complicated in this respect because it allows to treat properties as classes (and classes as properties). Also, because everything has to be a triple, „artificial“ properties that belong the metalanguage of the model are predicates at the same level as every other predicate, e.g., rdf:type or rdfs:subClassOf.

    Because of this awkwardness in the RDFS model these properties become elements of the domain to be expressed and can become arguments of other predicates at any time.

    Comment by Michael Panzer — 19. August 2009 #

Sorry, the comment form is closed at this time.