<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jakoblog &#187; ORM</title>
	<atom:link href="http://jakoblog.de/tag/orm/feed/" rel="self" type="application/rss+xml" />
	<link>http://jakoblog.de</link>
	<description>Das Weblog von Jakob Voß</description>
	<lastBuildDate>Sun, 20 May 2012 13:49:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<item>
		<title>Class or Property? Objectification in RDF and data modeling</title>
		<link>http://jakoblog.de/2009/08/14/class-or-property-objectification-in-rdf-and-data-modeling/</link>
		<comments>http://jakoblog.de/2009/08/14/class-or-property-objectification-in-rdf-and-data-modeling/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 22:23:30 +0000</pubDate>
		<dc:creator>jakob</dc:creator>
				<category><![CDATA[en]]></category>
		<category><![CDATA[Data Modeling]]></category>
		<category><![CDATA[Identifier]]></category>
		<category><![CDATA[ORM]]></category>
		<category><![CDATA[rdf]]></category>

		<guid isPermaLink="false">http://jakoblog.de/?p=745</guid>
		<description><![CDATA[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? [...]]]></description>
			<content:encoded><![CDATA[<p>A short <a href="http://twitter.com/rsinger/status/3290304276">twitter statement</a>, in which <a href="http://dilettantes.code4lib.org/">Ross Singer</a> asked about encoding <a href="http://www.loc.gov/marc/relators/relacode.html">MARC relator codes</a> 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 (<a href="http://dx.doi.org/10.1145%2F320434.320440">Chen 1976</a>) the question is whether to use an entity or a relation. Let me give an example by two subject-predicat-object statements in RDF <a href="http://www.w3.org/DesignIssues/Notation3">Notation3</a>:</p>
<blockquote><p><tt>:Work dc:creator :Agent <br />
:Agent rdf:type :Creator</tt></p></blockquote>
<p>The first statement says that a specific agent (<tt>:Agent</tt>) has created (<tt>dc:creator</tt>) a specific work (<tt>:Work</tt>). The second statement says that <tt>:Agent</tt> is a creator (<tt>:Creator</tt>). In the first <tt>dc:creator</tt> is a property while in the second <tt>:Creator</tt> 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 &#8211; I am not sure about plain RDF). In Notation3 the implications may be written as:</p>
<blockquote><p><tt>@forAll X1, X2. { X1 dc:creator X2 } => { X2 a _:Creator }.<br />
@forAll Y1. { Y1 a _:Creator } => { @forSome Y2. Y2 dc:creator Y1 }.<br />
</tt>
</p></blockquote>
<p>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! </p>
<p>Beside the lack of fuzzy logic on the Semantic Web I miss an easy way to do &#8220;reification&#8221; (there is another concept called &#8220;reification&#8221;  in RDF but I have never seen it in the wild) or &#8220;objectification&#8221;: 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 &#8220;Singer&#8221; class and Ontology B defined a &#8220;sings&#8221; property which refer to the same real-world concept?</p>
<p>Other data modeling languages (more or less) support objectification. Terry Halpin, the creator and evangelist of <a href="http://www.orm.net/">Object-Role Modeling</a> (ORM) wrote a detailed paper <a href="http://www.orm.net/pdf/objectification.pdf">about objectification in ORM</a> whithout missing to mention the underlying philosophical questions. My (doubtful)<br />
philosophic intuition makes me think that <a href="http://plato.stanford.edu/entries/properties/">properties are more problematic</a> 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 &#8220;semantic&#8221; data we work with. In many natural languages you can use a verb or adjective as noun by <a href="http://en.wikipedia.org/wiki/Nominalization">nominalization</a>. The meaning may slightly change but it is still very useful for communication. Maybe we should more rely on natural language instead of <a href="http://go-to-hellman.blogspot.com/2009/07/illusion-of-internet-identity.html">dreaming of defining without ambiguity</a>?</p>
]]></content:encoded>
			<wfw:commentRss>http://jakoblog.de/2009/08/14/class-or-property-objectification-in-rdf-and-data-modeling/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

