ontolog-forum
[Top] [All Lists]

Re: [ontolog-forum] Data Models v. Ontologies (again)

To: "[ontolog-forum]" <ontolog-forum@xxxxxxxxxxxxxxxx>
From: Ed Barkmeyer <edbark@xxxxxxxx>
Date: Tue, 20 May 2008 11:02:41 -0400
Message-id: <4832E811.4060608@xxxxxxxx>
Sean Barker wrote:    (01)

> I'm still trying to sort out when to tell people I'm doing data
> modelling and when ontologies, and the following is an interpretation of
> some previous postings on the subject.    (02)

First rule: "ontology" is IN; "data model" is OUT.  Therefore, whatever 
you are doing in the modeling arena, you call it "ontology" if you want 
to get FUNDING, and in some cases, Management Approval.    (03)

This rule guarantees that any intelligent distinction will be ignored.    (04)

Second rule (mine): The distinction between "ontological models" and 
"data models" is "formal/axiomatic definition".    (05)

In a data model, ALL classes are primitive.  Their definitions are 
always in "remarks" or "comments".  All that is ever stated (and all 
that can be stated in a data modeling language) is necessary and 
accidental properties.  In an ontology, SOME classes are primitive -- 
they are undefined symbols.  All other classes are *defined*, by axioms 
that state necessary and sufficient conditions.  In OWL/DL, you can only 
sometimes formulate class definitions, but you do what you can.  In more 
powerful languages, like CLIF and RDF and Ontolingua, you can write 
axiomatic definitions for MOST classes.    (06)

Moreover, in FOLs and near FOLs, you can define many properties 
axiomatically as well.  In DL languages, you can't really do better at 
defining properties than you can in data modeling languages like UML/OCL 
and EXPRESS; you can define "derived properties" as simple functions of 
other properties.  You can't introduce bound variables into the 
definitions, and most of the languages even lack a LISP MAPCAR for 
dealing with non-functional properties.    (07)

It may appear that one can use "rules" in languages like OCL and EXPRESS 
to formulate axioms.  The problem is that the languages assign them the 
semantics of (data set) "validation rules".  They are tests of the 
conformance of a set of assertions to the intended model.  That doesn't 
prevent data modelers from using "rules" to express the axioms they 
intended; but it allows them to mix and match, and they do, which makes 
it unsafe for the reader to see them as axioms.    (08)

As Natasha Noy observed, most published OWL models are essentially data 
models -- they contain no, or nearly no, class definitions.  And IMO 
that is a direct consequence of a generation of children (of all ages) 
who thought XML Schema was a modeling language and, as they came to 
learn something about data modeling, discovered OWL (because data 
modeling languages like IDEF1-X and SDM and NIAM and EXPRESS were 
"obsolete technologies").  And OWL/DL is a good data modeling language. 
  Quite honestly, I am only too happy to have their education caught up 
to 1988.  But this factor, coupled with the ignorance of buzzword-based 
funding, has caused the distinction between "data model" and "ontology" 
to be "academic".    (09)

But then, this forum is about "academic" concerns...  ;-)    (010)

-Ed    (011)

-- 
Edward J. Barkmeyer                        Email: edbark@xxxxxxxx
National Institute of Standards & Technology
Manufacturing Systems Integration Division
100 Bureau Drive, Stop 8263                Tel: +1 301-975-3528
Gaithersburg, MD 20899-8263                FAX: +1 301-975-4694    (012)

"The opinions expressed above do not reflect consensus of NIST,
  and have not been reviewed by any Government authority."    (013)

_________________________________________________________________
Message Archives: http://ontolog.cim3.net/forum/ontolog-forum/  
Subscribe/Config: http://ontolog.cim3.net/mailman/listinfo/ontolog-forum/  
Unsubscribe: mailto:ontolog-forum-leave@xxxxxxxxxxxxxxxx
Shared Files: http://ontolog.cim3.net/file/
Community Wiki: http://ontolog.cim3.net/wiki/ 
To Post: mailto:ontolog-forum@xxxxxxxxxxxxxxxx    (014)

<Prev in Thread] Current Thread [Next in Thread>