in

The ORM Foundation

Get the facts!

Step by step towards the UFO goal

Last post 07-18-2008 3:32 by Clifford Heath. 9 replies.
Page 1 of 1 (10 items)
Sort Posts: Previous Next
  • 04-19-2008 4:34

    Step by step towards the UFO goal

    From various discussions I conclude that several persons are willing to actively contribute to the unification of fact orientation. I hope that we soon can identify that flying object.

    May I suggest an approach to reach tangible results in the very near future?

    Let us first discuss and agree on what is common.

    From that solid base we extend our set of concept definitions, fact types, fact type forms and rules until we agree it is sufficient for practical purposes.

    Please make known whether you find this a useful undertaking.

    Kind regards

    Sjir Nijssen

  • 04-19-2008 8:53 In reply to

    Re: Step by step towards the UFO goal

    On the Welcome! page of the ORMfoundation we read:

    "ORM uses the principles of "fact oriented modeling" which has only one data structure (the fact type)"

    From this we may conclude that among others the following fact types belong to the core:

    1000: Designation <designation> identifies a specific concept 

    1001: <text> identifies a specific definition

     

    1010: <concept> has <definition>

      

    1021: Concept <concept> is a noun concept

    1022: Noun concept <noun concept> is an object type

    1023: Concept <concept> is a fact type

    1024: Noun concept <noun concept> is a role

     

    1030: Role <role> is in fact type <fact type>

    1031: Role <role> ranges over object type <object type>

    1032: Role <role> takes up position <position>

    May I invite all UFO-minded fact persons to let me know what you think about this bridgehead?

    Kind regards 

    Sjir Nijssen

  • 04-26-2008 2:44 In reply to

    Re: Step by step towards the UFO goal

    Some believe the world of conceptual fact based modeling is not making sufficient progress.

    Others believe the semantic community of fact orientation with its extensions to include major parts of SBVR and business processes moving in the direction of one totally integrated semantic description of a business or a subject is on track.

    It is useful to know where other semantic communities are and therefore to read the various publications about data standards, data quality, ODM and IMM. 

    I would be interested to learn what the professional opinion is of other persons contributing to the ORM Foundation website.

    Regards

    Sjir 

    Filed under:
  • 04-26-2008 10:35 In reply to

    Re: Step by step towards the UFO goal

    Hi Sjir,

    Interesting contribution. I agree that we need to get the ball rolling on this one!
    Here are some comments on your post:

    I'm going to take the postion that the metamodel of ORM can be expressed using ORM notation.
    I have copied each of your "fact types" and coloured them blue.
    Beneath each of your fact types is my ORM interpretation of the fact type.
    I'm not going to comment on its sutability for the metamodel - I'll leave that to Terry. 

    Ken

    1000: Designation <designation> identifies a specific concept 
    Designation identifies Concept(id)
    I would replace your term "specific" by adding a constraint to make each instance of "Concept" unique.

    1001: <text> identifies a specific definition
    To me, this is not an  fact type because <text> is a data type not a domain name.

    1010: <concept> has <definition>
    Concept(id) has Definition(text)

    1021: Concept <concept> is a noun concept
    Concept(id) has Type
    You might consider populating "Type" with the values "noun" and "verb" (reading from the SBVR specification)>
    However, there are probably more types of concept than just "noun" and "verb"
    Furthermore: As I understand it - ORM Objects are just names (nouns) not verbs. 
     

    1022: Noun concept <noun concept> is an object type
    This looks to me to be included in the previous fact type "Concept(id) has Type"

    1023: Concept <concept> is a fact type
    I don't see what you  are trying to say here.
    In ORM, a single term can be an "Object" or a "Predicate"

    1024: Noun concept <noun concept> is a role
    Isn't it true that a "meta fact type" is best expressed as something like: "Object plays Role"
    Generally, it seems to me that using "noun" as an adjectival modifier for an object called Concept is illegal in ORM.

    1030: Role <role> is in fact type <fact type>
    For me "Role" is a placeholder in a predicate.
    "Role occupies Placeholder in Predicate" ?

    1031: Role <role> ranges over object type <object type>
    I see this as being included in "Role occupies Placeholder in Predicate"

    1032: Role <role> takes up position <position>
    Role occupies Placeholder(position) in Predicate 


     

     

     

    Filed under:
  • 04-26-2008 18:11 In reply to

    Re: Step by step towards the UFO goal

    Dear Ken,

     

    I will answer first your remarks about the following three meta fact types:

     1030: Role <role> is in fact type <fact type>
    For me "Role" is a placeholder in a predicate.
    "Role occupies Placeholder in Predicate" ?

    [Sjir: I am here using SBVR terminology as I believe that that is the best chance to get the ORM/CogNIAM meaning more widely accepted; OMG is a standards organisation with an excellent track record.]

    [Sjir: In SBVR a variable in a fact type is called a role and a variable in a fact type form is called a placeholder. ] 

    [Sjir: the same meta fact type applies to CogNIAM and ORM, however some different names are used.]

    1031: Role <role> ranges over object type <object type>
    I see this as being included in "Role occupies Placeholder in Predicate"

    [Sjir: This is a meta fact type from Clause 8 of SBVR; it specifies which object instances of which object type may occupy a certain role. The same meta fact type applies to ORM and CogNIAM.]]

    1032: Role <role> takes up position <position>
    Role occupies Placeholder(position) in Predicate 

    [Sjir: SBVR makes a clear distinction between fact type and fact type form; I believe it is best for fact orientation if ORM and CogNIAM would adopt the same distinction.]

    Kind regards

     

    Sjir 

    Filed under:
  • 05-04-2008 15:36 In reply to

    Re: Step by step towards the UFO goal

    All fact orientation experts,

    Would you please indicate whether you agree or disagree on the core of the meta model and its associated necessities; once we agree on the first subschema we extend this one with the fact type forms and so on.

    1030: Role <role> is in fact type <fact type>

    Each role is in exactly one fact type.

    Each fact type has at least one role.

    1031: Role <role> ranges over object type <object type>

    Each role ranges over exactly one object type

    1032: Role <role> takes up position <position>

    Each role takes up exactly one position.

    Please take a few minutes and let us know what your professional opinion is.

    Kind regards

     

    Sjir

  • 05-04-2008 15:40 In reply to

    Re: Step by step towards the UFO goal

    Short and longer fact type forms

    In SBVR the fact type form used is:

    1030b: role is in fact type

    We have used the longer form as given below as this will result in more understandable sentences when verbalized. Of course these two fact type forms belong to the same fact type

    1030: Role <role> is in fact type <fact type>

    Regards

    Sjir

    Filed under:
  • 07-18-2008 2:11 In reply to

    Re: Step by step towards the UFO goal

    Sjir,

     What syntax are you using in these numbered statements? Is this an artefact of CogNIAM? I'm not familiar with your layout.

    I ask because it seems most sensible to choose one of the established modeling languages which have a known semantics, and use that to construct the fragments of the metamodel. If we really want to agree on the metamodel, it will be necessary to translate each element into each of the languages, and the best way to do that is continuously - I.e. if you publish a CogNIAM fragment, someone translates it into ORM2 with nORMa, I'll translate it into CQL, etc, and we can move ahead with each fragment as we agree that each is mutually understood to be equivalent.

    As a possible fast start to that, I have a metamodel in ORM2 with nORMa which I automatically translate to CQL. This metamodel itself is generated to the code that supports the generator, so I'm confident that at least the parts I'm using are sufficiently correct and complete. I believe it covers almost all of the ORM2 subset supported by nORMa, as well as a few extra things I intend to support in CQL. Some elements of the nORMa metamodel cannot yet be represented in CQL, so I emit a description of the missing ones in comments.

     My model isn't simply an attempt to model ORM2; I merge some SBVR terminology, and I introduce a new type called PresenceConstraint which is a supertype of MandatoryConstraint, UniquenessConstraint and FrequencyConstraint; yet the semantic content i preserved.

    If you think that a complete existing metamodel in CQL, which is a form of structured english (not the SBVR S.E. though) would be useful, I'll be happy to offer it up to be picked apart. The nORMa model is available as well of course and is guaranteed isomorphic, but it isn't so easy to identify relevant fragment groups from the multi-dimensional ORM representation.

    I decided to attach the Metamodel.cql file anyway. This is auto-generated from the nORMa file which I can also attach if desired. The order of declarations is multipass alphabetic (to avoid forward references) with fact type emitted as soon as their precursors are. The Metamodel.orm file is rejected; rather than attaching it, you can download the current version here.

    Filed under: ,
  • 07-18-2008 2:44 In reply to

    Re: Step by step towards the UFO goal

     

    Clifford,

    "If you think that a complete existing metamodel in CQL, which is a form of structured english (not the SBVR S.E. though) would be useful, I'll be happy to offer it up to be picked apart."

    I'm curious, how come you chose not to use SBVR SE?

    Ken

  • 07-18-2008 3:32 In reply to

    Re: Step by step towards the UFO goal

    Several reasons.

    1. I started this well before SBVR was released, to provide a textual interchange format for ORM2 models.
    2. I also began with the intention of executing CQL as code, while SBVR makes a principle of avoiding such pragmatic considerations, choosing instead to focus on defining rules for people to interpret.
    3. SBVR allows declaration of rules that cannot easily be automated. CQL so far only incorporates automatable declarations.
    4. CQL includes an integrated query language (fact derivation language) that is more powerful than SQL and much more readable. This solves the problem of how to define derived fact types, and offers the prospect that SQL may become redundant. The implementation of converting CQL queries to CQL is not yet done, but much of the groundwork is complete.
    5. The SBVR Structured English is, like CQL, quite difficult to parse using established compiler generators, but SVBR is much harder.

    Neither language is context free, and both support open vocabulary, so parsing requires unlimited lookahead (or backtracking, if you see it that way). Using the most recent tools that implement packrat (or PEG) parsers, such as the Treetop parser generator for Ruby of which I'm a co-developer, makes this backtracking possible to implement in a reasonably efficient way, but I still wasn't sure that SBVR's S.E. was feasible.

    An example in CQL, if I have the concepts Person and Location defined, I can say:

    Person was born at at most one Location;

    Notice that the word "at" has two uses here, one in the key phrase "at most one", and one as a linking word in the fact type reading. The only alternative to this would be to force the two declarations (a fact type and the associated uniqueness constraint) into two separate statements, and use a traditional computer-speak style keyword introducer to decide what type of statement is being processed; this results in the kind of un-natural language that has always shut out business users from the modeling process.

    In an SBVR tool or nORMa,  colour can be used to highlight the existence of extra-textual syntactic elements, but this departs from my goal of representing models as plain text. The extra elements in nORMa's fact type readings are required to be able to parse them. As it is, my nORMa import tool may emit CQL that cannot be parsed, for example if a concept name is used in a reading as a normal linking word. I'm working to improve recognition of these cases, but they can only be fixed by modifying the original model.

    CQL also has the ability to load alternate language modules; the part of the parser that recognises key words and phrases in English is the first of many; it can easily be replaced with one that does the same in Italian or Japanese. So when I say CQL is "structured English", it could be any structured natural language for which the appropriate language adapter module has been written, whether the language uses leading or trailing adjectives. The module for English is only 70 lines of code.

    In the same vein, it would be possible with some further work to build an SVBR language subset, merely by defining the appropriate language rules, but re-using all the back-end infrastructure and generators. If someone wants to attempt this, please contact me. As mentioned, I expect to produce commercial software as well as retaining an open source tool, so consider your contributions in that light. I have too much invested to produce everything for free.

    Filed under:
Page 1 of 1 (10 items)
© 2008 The ORM Foundation: A UK not-for-profit organisation