Search the web
Sign In
New User? Sign Up
information_modeling · Information Modeling
? Already a member? Sign in to Yahoo!

Yahoo! Groups Tips

Did you know...
Show off your group to the world. Share a photo of your group with us.

Best of Y! Groups

   Check them out and nominate your group.
Having problems with message search? Fill out this form to ensure your group is one of the first to be migrated to the new message search system.

Messages

  Messages Help
Advanced
ORM Metamodel   Message List  
Reply | Forward Message #232 of 237 |
Re: ORM Metamodel

jportalfraga wrote:
> Regarding Data Constellation ORM Metamodel
> http://www.dataconstellation.com/ActiveFacts/examples/ORM/Metamodel.orm
> Does the term 'Concept' stand for SBVR Concept?

To be perfectly flippant, "Concept" means exactly what the model says it
means ;-). That is, this model *defines* its own meaning for Concept.
It's in the nature and intent of a semantic model that a concept is
defined *only* by the roles it plays, and by nothing else. In particular,
the natural-language meanings for words aren't definitive. Choice of
names is a design decision for the purpose of illustration.

However, to be more particular, Concept is what ORM2 calls an ObjectType.
That is, a ValueType or an EntityType, including the objectification of a
FactType, but not including a non-objectified FactType.

I understand this to be congruent to the SBVR definition of "Noun Concept",
which defines a class of "things". A fact type becomes a "thing" when it's
objectified, i.e. when it becomes an EntityType. However, SBVR considers
all fact types to be concepts, whether or not they're objectified.

Refering to SBVR Rev 1.0 page 19, you'll see that the class of concepts is
divided into noun concept and verb concept. The latter is what ORM2 calls a
fact type. An objectified fact type consists of a noun concept (entity type)
that "nests" or objectifies a verb concept (fact type). I don't know whether
SBVR separates a fact type and its objectification in this way.

In ORM2, an entity type that plays a role in a fact type is designated as a
"role player", which is a descriptive term only. In SBVR, this is designated
as a "fact type role" which is a subcategory of "noun concept".

In ActiveFacts, I take a middle line between these. A Role in a FactType is
played by a Concept, but the readings of that fact type are built of RoleRefs
(role references) which may contain leading and/or trailing adjectives. The
combined "adjective/concept-name" form (referred to in some places as an
"adjectival form") is exactly what SBVR designates a "fact type role".
However, unlike in SBVR, the adjectival form has only local scope, that is,
the adjectives are used only to choose between fact types having the same
players and the same predicates; the combined adjectival form doesn't have
global scope.

For example, take the two fact types:

Person has given-Name;
Person has family-Name;

The predicate in both cases is "has", and the role players are the same
(Person and Name). The adjectives must be used to indicate which fact type
is intended, wherever that may be uncertain. Note also that in CQL, the
hyphen is required (but only once in a given statement, see examples below)
and need not have a white space following (for a leading adjective) or
leading (for a trailing adjective). Unfortunately this means that hyphenated
words like semi-trailer cannot be concept names as in ORM2. A future version
of CQL might relax this restriction.

If the same fact type must be invoked twice in the same query, CQL provides
two alternative methods, of which only one is currently implemented.
Consider a query that wants to find all Persons who have both John and Richard
as given names. The fact type "Person has given-Name" must be invoked twice in
the same query, where the Person is the same instance but the names are
different.

The first alternative (not implemented) is to use a local adjective:

Person called john and richard is where
Person is called given-Name 'John',
Person is called other- given Name 'Richard';

This is shorthand for the full query:

Person called john and richard is where
Person is called given-Name,
given Name = 'John',
Person is called other- given Name,
other given Name = 'Richard';

This defines a new unary fact type played by Person, having the predicate
"called john and richard". It does this by introducing the two role names
"given Name" and "other given Name". However, the CQL parser cannot yet
resolve this latter role naming, where more than two words are involved.
You see the need for this resolution in the extended form, though it's
also needed in the condensed form in order to identify the "given Name"
fact type. Note that the adjectival form "other given Name" only has local
meaning within the derivation of this unary fact type.

The second alternative is to use a role name:

Person called john and richard is where
Person is called given-Name,
given Name = 'John',
Person is called given- Name (as otherName),
otherName = 'Richard';

In this case, there is no need to resolve a three-word identifier.

A query for all Persons having both names can now be formulated as simply:

Person called john and richard?

I was unable to convince Terry that the adjectival forms "given Name" and
"family Name" (or for that matter a role name) should be a unique identifier
for that role within that vocabulary (ORM2 schema or model). So as it is,
Name might play the same "family-Name" role in two different fact types,
such as "Person is called family-Name" and "Family is called family-Name".
In my view, this shouldn't be allowed. Likewise, Terry says he often uses
a role name that exists as a name elsewhere in the model. The role name is
used merely to derive a more useful SQL column name or for illustrative
purposes, but in my view, that shouldn't overrule the possible confusion
from re-using such names. The problem doesn't really exist in ORM2, but it
does in a plain-text language like CQL.

Clifford Heath, Data Constellation, http://dataconstellation.com
Agile Information Management and Design.




Thu Jun 4, 2009 6:52 am

clifford_heath4
Online Now Online Now
Send Email Send Email

Forward
Message #232 of 237 |
Expand Messages Author Sort by Date

Hi all, Regarding Data Constellation ORM Metamodel http://www.dataconstellation.com/ActiveFacts/examples/ORM/Metamodel.orm Does the term 'Concept' stand for...
jportalfraga
Offline Send Email
Jun 4, 2009
1:57 am

... To be perfectly flippant, "Concept" means exactly what the model says it means ;-). That is, this model *defines* its own meaning for Concept. It's in the...
Clifford Heath
clifford_heath4
Online Now Send Email
Jun 4, 2009
6:56 am

Thanks Clifford, Therefore, the word "Concept" has the same meaning as ORM2 ObjectType, and it doesn't denote the same thing as SBVR "Concept" term at all. I...
jportalfraga
Offline Send Email
Jun 8, 2009
7:55 pm

... For a concept to have "the same meaning", it must play exactly the same set of roles. Please re-read my definition of "meaning" from my previous message....
Clifford Heath
clifford_heath4
Online Now Send Email
Jun 9, 2009
12:19 pm

What about using "GeneralConcept" instead of "Concept" for better matching with SBVR? It could also be used "FactTypeForm" instead of "Reading". I prefer to...
jportalfraga
Offline Send Email
Jun 11, 2009
2:13 pm

... I assume you're using the diagram at the start of SBVR section 8.1 (snapshot below for those who don't have it open). The definition of "general concept"...
Clifford Heath
clifford_heath4
Online Now Send Email
Jun 12, 2009
7:26 am

... I was absolutely wrong when I tried to match "general concept" to an ORM object type. Actually, now I think a better approximation to the interpretation of...
jportalfraga
Offline Send Email
Jun 17, 2009
6:59 pm
< Prev Topic  |  Next Topic >
Advanced

Copyright © 2009 Yahoo! Inc. All rights reserved.
Privacy Policy - Terms of Service - Guidelines - Help