CA2175243A1 - Semantic object modeling system for creating relational database schemas - Google Patents

Semantic object modeling system for creating relational database schemas

Info

Publication number
CA2175243A1
CA2175243A1 CA002175243A CA2175243A CA2175243A1 CA 2175243 A1 CA2175243 A1 CA 2175243A1 CA 002175243 A CA002175243 A CA 002175243A CA 2175243 A CA2175243 A CA 2175243A CA 2175243 A1 CA2175243 A1 CA 2175243A1
Authority
CA
Canada
Prior art keywords
attribute
attributes
semantic
semantic object
relational database
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
CA002175243A
Other languages
French (fr)
Inventor
David M. Kroenke
Christopher C. Olds
Kenji Kawai
Lee I. Eggebroten
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wall Data Inc
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Publication of CA2175243A1 publication Critical patent/CA2175243A1/en
Abandoned legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/289Object oriented databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface

Abstract

A computer-based system for allowing a user to create a relational database schema. The system allows a user to create a semantic object data model of the database schema. The semantic object data model is defined by one or more semantic objects, each of which includes one or more attributes that describe a characteristic of the semantic objects. The attributes are defined as being either simple value attributes that describe a single characteristic of the semantic object; group attributes that include one or more member attributes that collectively describe a characteristic of the semantic object; formula attributes that set forth a computation that describes a characteristic of a semantic object; or object link attributes that define a relationship between two or more semantic objects. Once the semantic object data model is created, the system validates the semantic objects to ensure no modeling errors have been made and transforms the semantic objects and their included attributes into a plurality of relational database tables that will store data as defined by the semantic object data model.

Description

2 '2 l ~J 5~43 PCT/US94/10355 ~ --1--.SFMA~ C OBJECT MODELING ~ ;~ FOR
CREATING RELATIONAL DATARA~F s~lF~lvrA C
Field of the In~,hl~ion The present i ~ ion relates to c~ -u~ .,ls in general and, in particular, 5 to S~ S for ~ g ~ e s~ "~c Back~oulld ofthe Ll~e.l~ion As the cost of c~ ul~ decrease, more people are l~ul~lus.l~ CO~
systems that have sophio~icated ~ and data storage capabilities. In ~d;tiQn to the word procPso;~ and spread sheet programs used with such c~ pu~*r S~ lS, another CG~ ol use for such systems is to store and l.;l~ , data using co.. F,~c;all~
available d?tabao-e msnagPmPnt svstem ~DBMS) products. For example, a home co.-.l~u~ system user may wish to store and access; ro~ ~t;on reg~.l~g an illvt~...f-~l portfolio on the cc~ u~r. Si nilsrty, the owner of a small bu- --~ss may desire to use a co---~""er system to keep track of its ~ Q~ olr, and sales 15 orders. While u~ cially available database programs allow a user to store andr~~ ,.; these types of; -rv-~ ;Qn, CUll~ available database prù~ls have a steep le~ g curve that liscoul~ges the a~ ge c~ r user from de.~loping any but the most simple of databases.
Most col,~ ion~l database programs use what is co...-~ known as a 20 rp1stion~l database ~ n~ e. These relstinnsl databases consist of one or moretwo dimensional tables that contain llulll~, uus rows and col-lmnc Each row of the rPIstion~l table def~nes a record of the data. For example, in a c-~ctc .f r table, each row refers to a particular ~l~tQmPr in the database. The col lmnC of the tables store particular ~ lçs of each record. For example, one column may hold a cUstomp~rls %~ 43 -2-last name, another the cl~Qtom~o~Js first name, and another the c~1stom~-'s street or post office box nul..ber, etc. The structure of the re1stiQns1 tables that store the data co~ is,ng the database is co.n~ )n1y rerelled to as the dstsb~ce s~h~ns, The ~lifficvlty with using a co.. e~,;ally available ds~l~bAce prog-~.- is 5 knowing how to define the database srh~.mg. Typically, in order to create ~.~II~...g, but the most simple database, the user must either be~o~.r an expert d~gtPl~are de~ r or hire a co~c~ to create the database. Both options are generally undesirable bec~-lce most ~,-~ r users do not have the time or the desire to beco...r expert database designers, and the cost of hiring a conCllltsnt can be lO prohibitive.
Another problem with current d~gtvgbg~ ~lU~llS iS that they force the user to define the data that they wish to store in the database in a way that is det~ ..-:-.ed by the database plu~l.. For example, to aeate a new database, most database programs present the usa with a blank table and ask the user to identify the type of 15 data to be placed in each column. If more than one table is ~ullcd for defining the ds-tsb~ce uhems~ the user must create each ~ ;fions1 table and define a key field or e that is cc------ol~ to two or more tables in order to relate one table to anulller.
The problem with this method is that the user most likely does not think of the data to be stored in terms oftables, ~t-1mn~, and keys. For example, the user who wishes to 20 create a database for the il.~- ~t~ portfolio data most likely thinks of the data in terms of the names of cn~ps -ies in which stock is held, the l~ er of shares of each owned, a l~ul~--e price, a ~ Lase date, a price-to es-..;~C ratio, etc. By B the user to define r~1sfinns1 tables in co~lf~ nre with rigid rules, the ---.e .,;al ~o.t~oQe plOg~ l forces the user to think of and characterize the data to 25 be stored in a way that is u Th~r~fole, there is a need for a system that allows a user to create a r~
~gtgbgQe schema in a way that does not require the user to be familiar with the unde.ljillg database teG~--olo~y or rules for dr-~ a database. The system shouldbe easy to use and be able to run on ~-- ~r~nl)~ available cc--.~ t~l~S. In30 -~lditinrl~ the user should be able to define the data to be stored in a way that mirrors the user's view ofthe data.
Sl-..--~ yoftheLl~ tion To address these problems ~c~oe~lc~ with prior art database ~jte.lls, the present ill~.llio~l is a system for allowing a user to easily produce a ~ bd~e srhems 35 The system allows a user to create an album that defines a ~ ~-o ~;c object data model of a plurality of re1stio~s1 database tables that define the database scherna.

WOg5/12172 2 1 7 5 24 3 PCT/USg4/10355 The semantic object data model defined by the album inr~ldes one or more semantic object~s, each of which inc~ldes one or more ~ (es that define a characterisitic of the semantic objects. The ~ ;l.ules are defined as being: (a) simple value ~h~ ul~s that de~ he a single characteristic of the sP ..c~1;r, object; (b) group 5 ~Il-;bul~Ps that include one or more ...f...h~l hll~ ules, which collectively desc~ibe a chara~te~ictic of the sPn srltic object; (c) fo~ D ~ ;bules that set forth a ro-.-~
which dP-~ ~ il.es a characteristic of a ~ ~o~1 ;c object; or (d) object link ~ ule5 that define a relstionrl~ir hh.__l one or more semantic objects. Once the album has been created, the system validates the album to d~t~ e if the user has created any 10 modeling errors. Ai~er the album has been v~s~;d?ted the system ll~..cr5~....c the semantic objects and their inc~lded ~ 5 c~ ;..YI in the album into a plurality of re~vs~i~ nsl database tables that will store data as defined by the semantic object data model.
The present invention also ~ -es a mPthod for vs~idPting an album to 15 detP~m;~P if any serïlantic objects in the album are ~rn---~vled to the 1 "o~ p.
semantic objects of the album. The vsl:~lstirJn method also dete-...;-l~s if a SP,n~,g,ntir, object in the album is uniquely idç.~1;r~PA by anc)th_. semantic object, which in turn is uniquely idp.~1;r~ed by the first semantic object. The ~;d~ method also dele~ PSifa forrnllls ~ ih~leiSlA;u~ yd~PfirlP~l The present invention fu~ther comprises a mPthod for i~lt~.yleling rO~ vl~
ibu~c The method i~ des the steps of searching the semantic objects for the n mes of the terms used in an cA~lesslon ~ ",_.ly of a ~ L ~ ihule. The system p~.r~ c an ~ d -~3 ring search from the fo . . ~19 r~l~ib~e to the s ~ n;c object that ~.. 1~ c the rO.. l~ 9vttrih~lte and to the ~ ;~ semantic objects in the 25 sem. ntic object data model. The search produces one or more lists of ~ ,ules that are located at the same logical ~ ;e from the ~ 1D h~ lte. The lists are searched to find all instances of -s~ t~s having the name of the ~ il-u~e used in the formllls cA~l~on plopc.l~, as well as all paths to a single 7~l~il,ule used in the fiormlllo If there a~ist two or more ~ ulc s within the semantic object data model 30 having the same name or two distinct paths to the same ~ ibu~e used in a fo....-~la, the system plc,llllJts the user to decide which Pll~il,..le or path to the ~ u~e is to be used in the formll1s The e-l,o~-3i~g ring search allows a user to define a formllls in terms of Lvll~;b.l1cs that are defined in other semantic objects.
BriefDes~ )tion oftheDla~h~gs The rOl~o.. ~g aspects and msny of the ~ Ar-.1 ad~ ,es of this invention will be~llle more readily appr~i&led as the same bP~-..es better llntlPrstood by ~l ~ 1 5~43 _4_ _ ~;rt,~.-ce to the following det~iled de~ tion, when taken in co~ l;nn with the ~rc~l"~ ing dlawh~gs, wL~r~:
FIGI~RE 1 ,~pres~nl~ a cQmrutPr display of a graphical user interf~ce screen that enables a user to create a ~r~~Qe schema according to the present i"~nlion;S ~IGI~RE 2 lepiese.l1s a cc~ p~ r display of a graphical user int~rf~ce screen showing an example of a plurality of semantic objects that can be ~ ed by a user and ~Y .~ .d into a database schPma;
PIGI~RE3 represents a cc....l~lle~ display screen sho~..n~ an c~
p,ope.l~ window where a user can alter one or more propc.ly values of a s ~ ;c 10 object, profile, or ~
FIGllRE 3A is a block di~" of a c ;r~ r system that implements the present invention;
~ IGI~RE 4 iS a fiow chart ~howing the steps p~r~ Gd by the present invention to create a semantic object;
FIG~RE 5 is a ~ow chart shc,wh~g the steps pe rJ~.~.cd to create a simple value profile;
PIG~lRE 6 is a fiow chart ~how;n~ the steps pç r~..... çd to create a simple value Y~ib~le, ~IGVRE 7 is a flow chart ~howin~ the steps pe~r~çd to create a group profile;
~IGI)RE 8 is a fiow chart showing the steps pe~ r ~d to create a group "le, ~IGI~RE 9 is a flow cbart sl~wing the steps p~ r,.... Pd to create a fonnvli~s profile;
PIGURE 10 is a fiow chart sho.. ~ the steps p~, ru..... ed to create a forrmlls ~ IG11RE 11 is a flow cbart shuwJng the steps pc r,.. . ~.d to create an object link profile;
~ IGI~RE 12 is a flow chart shvwi-,g the steps pe~ r~ Gd to create an object 30 link ~ le, FIGllRE 13 is a flow chart sh wing the steps p- - r", . ed to create a parent-type ~ lle, ~IGIlRE 14 is a flow chart sh~ the steps r~uircd to create a ~ul~l~e ~1- il-."e;
~IGURE 15 is a fiow chart ~h.>wi.,g tbe steps r~uil~d to create a ;~lb~y~e group ~Il.il..l~e;

wo 95/12172 2 1 7 5 24 3 PCT/US94/10355 FIGURES 16A-16C are a series of flow charts shuwing the steps lie ro~ ed when an nll~;k~lle is ~se led into a sems-ntic object;
- ~IG11RES 17A-17B are a series of flow charts vhowillg the steps p~,. rO.. ~d when an Pnnh~lte is i~ve~ led into a group ~ e, S ~IGIlRES 18 is a flow chart showing the steps pe-ru.. ~d when a prûfile is inserted into a group profile;
FIGURES l9A-19B are a series of flow charts shuv~ the steps pe,r~ lled when an sttribute is inse.led into a s.lbt~e group ~ll.il.ule, FIG11RES 20A-20C are a series of flow charts shu..i.lg the steps p~r~"llled 10 to evaluate a fon~vls~ ~l . il""e, FIGURES 20D-20I are a series of flow charts showil~g the steps pe~ rO. .~ed to validate a sçrnsntic object data model;
FIGllRE 21 is a ~ow chart shùwl,l~ the steps taken by the present invention to ~ r""" a sem~tic object into one or more rellstinnol tables;
15~IGIlRE 22 is a flow chart sho~ the steps taken to harlsrull,l a simple value ~ ih~lle into a relstinnsl table;
FIGI~RE 23 is a flow chart shu~ the steps taken to ll fiRro..~ a group 9~trih~lte into one or more relstionql tables;
FIGI~RE 24 is a flow chart sho..i,~g the steps taken to l-~ rU---- a fonmlls 20 ~l. ib~l~e into a l~lo~;ol~l table;
FIGllRES 25A-25C are a series of flow charts shuwi~lg the steps taken by the present ill~e.lt;on to transform an object link ~ ib~ne into one or more relstinn tables;
FIGllRE 26 is a fiow chart sl~wlng the steps taken to l,~ r~, ... a parent-type 25 ~9~ lle into one or more relational tables;
FIGURE 27 is a flow chart sh~,~..,-g the steps taken to h~ r~....~ a v~lbty~e group into one or more relational tables;
FIGURE 28 is a flow chart vL~Jwil~g the steps taken to h~ Q-fol~ a parent group into one or more lel~;n~CI tables; and 30FIGI~RE 29 is a flow chart showi~l~ the steps taken by the present ,n~ tion to define the primary keys of a rel~ table and prompt a user to resolve any b g~ Q in the keys ofthe tables created during the h~ -ru""~ - of the semantic object data model.
Detailed Der~ tion ofthe P~fell~d Embodiment 35As ~e-^nhed above, the present i,l~ tion is a system for allowing a user to easily create a database schema that will co,l~~ store and ~et~ data. As will be %~15~3 -6- -~les~,~ilJed in fiurther detail below, the user creates a graphic visual lepres~ a~;on of the data to be stored in the database and the relsfinnQ-hirs that exist bel~en vaïious parts of the data. The visual ~ inn called a s~-m-s-ntiC object data model, is then h~ r.J---.~ by the present invention into a series of co~ r co~ ds or 5 filnction calls that cause a co...~.. lcially a~ e database p~ . to create a ccill~,slJo~ ;nn~l ~?t-sl~sce sr,h~Pms FIG~RE 1 shows a graphical user interface display screen c~ y of that produced by the present invention, which allows a user to create and msnirllate data that will be stored in the database In order to more clearly explain the present10 invention, a sample album is provided as follows This album represents a database that could be used by a small college. The database might include data ide~ ji,.g plol;-co~ and the classes they teach, as well as st~ld~ntQ and the classes they take.
Also inr~ ed in the ~Ist7~sQe would be more specific ;..~ I;nn about the plofesso,~
and shldçntQ ~ litinnslly~ the database might include a desclii)hon of the classes 15 taught at the college, the locstinn of each class, and the time each class is held.
Finally, it would pr~a~ly be desirable to identify each student's advisor and each p,Or~j~,'s advisees in the databa e.
In order to create such a database, a user would interact with the graphical user interf~-e to create appl-,~liale semantic objects. As will be appa~hlt from the 20 following example, a semantic object simply l~pl. _.1tS a cQncel~t~ unit of data that the user desires to store in the database. The objects are called "semantic" objects because their ~pfinitinn and Stlu~ilul~ have .~ ;~ for the user developing the database.
In FIGURE 1, four semantic objects are shown. A first ~mslltic object 10 25 r~p,~,se.,ls a proressor at the college. Wlthin the semantic object 10 are a ~lw~lber of ;kl~lf s that are ~csoci~tçd with each pr~fessor. Each professor has a salary, an inrl;~qtinn of ~LIl,e the pr~fessor is tenured, one or more advisees whom the plofessor c~ Pl5, and ;..r.--.---l;on reg&dil~g one or more classes that the proresjor t~ Ps A sPmsntic object 20 ~ t~ a student at the college. Each student has 30 ~ 5 such as the student's major, the student's grade point average, classes that the student is tal~ng and the grade rec~ ,d in each class, and the name of the proressor, if any, who is the student's advisor.
A s~Pmsntic object30 desc~;l,es the classes taught at the college. The eS that define the class include the class name, the class des~ t;nn~ the 35 classroom where the class is taught, and the time at which the class is taught.

WO 95/12172 2 1 7 ~ 24 3 PCT/US94/10355 ~At~ nglly, for each class, the proressor t~--hi~ the class and the shldents t~cing the class are idçntifieA
A sPmsntiC object 40 is a "palenl" type of the sPmsntiri objects 10 and 20.
The sems-~tiri object type 40 defines ~ u~es that are cc.. nn to every person in the college. Each person has a name, a social secudty .. ~her, an address, and a phone ,~.,~e.. Recsv,urQe these ~ ;bule5 are cG-.. ~n to all people at the college, they are plup~ placed in their own sçmsntic object. The professor and student sPmsn~i~
objects are ~ ,es of the person semsnfil; object 40 and, bec~ 3e a professor is a person and a student is a person, each professor and each student has every ~ ib~J1e 10 of the person sPmsntiC object. Those vsil~ s that are unique to a professor (e.g., tenured) are defined within the ploLjsor semantic object.
As will be de~i~;l)ed in detail below, the present invention allows a user to create sPmglltiri object data models that represent any kind of i~r~ n that the user desires to store in a database. The user can easily create the sPms~tic obje~ts, provide 15 the ~ JUIeS for each sPmsntic object, and define the relstirnQ-hirs b~~ ,.l the semantic objects in a way that reflects how the user views the data. The collecti~n of semantic objects that define the semantic object data model are stored in a datas~ucture ,~,fe.,~d to as the album. The album thus lc~,~e.l1s a cQ1le~;QI- of data and the relsti~ nchirs that exist t;~,h.~ the data to be stored on a dsl~k~ce. For the 20 lJul~05eS of the present sre~ifi~inn, the terms semantic object dafa model and album are c~nQ;~red to be ~.IOlly~lluuS. Once the user has completed the album, the user selects a "validate album" option, which verifies the user has not made any.- odFli~g errors. Once the album has been v~lY~teA the user selects a "Gelu.~leSrhem~" option, which cwses the album to be h~r~f~ r~ into a series of co..- --~ c 25 or filn~ n calls that are i.ltel~l~ted by a c~ c;ally available ~l~bq~e plogl~ll to create a plurality of relational tables that reflect the semantic object data model created by the user.
In order to further aid the ul~de~ ;~ of the present invention, it is helpful to ul~dc.~tsl~d the ..-~q~ g ofthe following terms:
album a c~ n of sP~ ;c objects that ~ e.1~ data to be stored in the database semanticobject a logical g~ouping of; ~ro~ ;on that defines an entity to be stored in the database zA3 -8- -attribute a specific piece of i.~rO. ~ n that des~ es a characteristic of a s~msntic object in which the ~1l- ;l,ule is placed simplevalue attribute a single piece of data such as a name, salary, social security number, etc., co..l~ .ed within a s~msntiC object group attnbute a logical ~ou~ of attriblltes that are co-~..onl~ found tof~ether (for example, an address is defined as a group which include~ the street name, city, state, and ZIP
code) formula attribute a .- ~ ;cgl operation that d~ ~ -- il es a charact~rictic of a semantic object object link attribute an ~ le that defines a relationship b~ n two or more semantic objects profile a t.. .~pl~le that is used to create a C~ )Q~ g A~ "e Each ~ le de~--;hed above has a profile from which it is created.
However, an ,~ ib.,le is asso.;ated with a particular semantic object and its prop~lies can be ove~ d~n from those defined in the cG~ol.d; ~g profile. Profiles are usedto allow a user to easily change all the nl l il~ul~s in the 5~ ."~I;r, object data model by 5 c~ the profile from which the ~ c are derived, where many ~l~.ibl"es of the same type might be placed in dilr~ t semantic objects.
As can be seen in PIGI~RE 1, the present i.~ tion inrl~ldes a profile manager window 50 from which a user may select a pre~ fi..ed profile; 9ll ..cl;~ely, the user can create his/~er own profiles. The profile .--~ is used when d-r~ "es 10 for a spmsntic object. For example, a user can drag and drop a pretl~fin~d or newly created profile into a semantic object in order to create a collesyo~ g ~ e within that semantic object. To create the name ~ lle within the person s~ fir, object 40, a user selects the "id~-nfifier-text" profile within the pro~e ...~nage~ and 9 ~ 1 75~43 drops it into the person sPmsntir object. The user can then ~sor;ste a title such as "name" with this Yttribute that makes sense within the given sPmsntic object.
FIGI~RE2 shows in greater detail the four sPmsntiC objects shown in FIG~RE l. The glaphical user intçrf~~e ;.,~1 cvlcs to the user of the system the type 5 of ~ ules that are found within a sF ~ ;c object. Simple value ~ ulF~ s are listed by their name. Group nll~ uleS are shown in brackets. Object link ~ ;b.lles are shown oull;~r~ An equal sign before an ~ le inA:^7tes the ~ lle is a fonm119 type.
Every ~ ule within the semantic objects ind*vstes whether a user uses the 10 ~11 . il,.,le to refer to a particular i~ ce of the sPmsntic object. This charactPri~tic is shown as the ID ;..Airrl;nn to the left ofthe ~ ibule name. If the intlicntinn as shown as "~2." that ;"A -~F5 the sv~l~i1.ule defines a unique instance of the sems-ntic object.
For ~ ~Ic in FIGURE2, the ~ 1le social 3ecwi~y ~ lb~r in the person sPmsr~tiC object shows that a pc ~Oll'S social security llullll~c uniquely idçntifies a 15 particular person. Lf the in~ 9~tinn iS shown as "ID," willluul the under~ e~ that intlic?tes that the user may use the ~ Jule to refa to an ;..~t~ce of the se ..~ ;c object but the ~ -.,le may not be unique. For example, the name of a person in the college semantic object data model shown in FIG11RE 2 may be used to refer to a person in the college. However, two people may have the same name. Thus, the 20 name a~ le is not a unique i.~ ;r.,,. Finally, if no ID i~ c~ n is shown to the left of the h~l.i1.~"ç, that il~A;~t~s the ~ .,le is not used to specify particular nC~S of a semantic object.
In the lower right-hand comer of each ~ -,le is an inrlir~stion of the le~s cardinality. This is shown as a _~scrirt consisting of a pair of hll~e.
25 having the form "n.m." The "n" refers to a minimum cardinality of an ~ ule" This is the ... . -....--- lUUl~. of i-- ~ r~5 of the ~ -ule the semantic object must have to be valid. Fûr example, the person semantic object 40 shown in FIGI~RES l and 2 shows a group ~ u~e "address" having a cardinality lN. The "l" refers to the fact that a person must have at least one address. The second numeral refers to the 30 .--~ -.. cardinality, i.e., the ~-~; ~u~ nulllb~r of i~.~t~ n~e,S of the Ls-ttrib ~te that a semantic object can have. The .--~;-- --- ~dill~l;ty of the group hll ~ ;bule address is IIN,N thereby i.-~ic~ that a person may have many addresses.
A s~:~s~ipt ~pll next to an object linlc hll~ lle int~ vstes that one sP~msnti~;object in which the ~ le is shown has a parent semantic object. The student 35 ~-.-~-.I;c object 20 co.~ n~ an object link ~1l.i1~,l1e called "person" with a s.1l~ ;pl "P" next to it to i~A cAle that the person s~msntic object is a parent-type of the 3 -lo-student semsntic object. Similarly, the person semantic object CO~ an object link a~ e called student having a s~ bs~npt 0.ST ;,,.~ that the ehld~nt semantic object is a s.lbt~,c of the Person sPmsntic object. ~ itionq1ly, subtype ~ ules may be placed in a group as shown by the group "P~,,so,lly~,e'' followed by the 5 _bs^ript "l.ST" which ;nAic~les that a person must be either a pror~.~sor or a student in this semsntic object data model.
As will be apprec;aled~ the visual display of the semantic object data model allows the user to see a leplc~ ;o~ of the data model as they have defined it. The semantic object data model allows a user to msniplllste the rPIsti~ nchips b~.h. ~ the 10 semantic objects and the -s~ .ulf~ co~ ed therein. By msniplllsti~ the s .~ ;c objects, adding or d~lel;~g at~ ul~s as well as cr~t;llg groups, parent types and ~bty~cs, the user can model the data in a way in which the user views the data.
Upon ll~ r~ ';nn of the semantic objects, the user will be provided with a database schema that will store the ;.. fi.. ~;o-- in a set of rPIstionsl tables that reflect 15 the user's view of how he or she en~ .;ol~s the data.
In order to allow a user to create a ~nantic object model, the present invention provides for the ~;,edlion and msnipllls*on of the following Fl~."~ y b~ blocks: semantic objects; has-a type a~l~il uleg (i.e., simple value, fG~ Ia,object link, and group); and is-a type ~ iln~lcs (parent, subtype, and ,~bty~.e group).
20 The user creates the 3' -~ I;C objects by s~k~ a "create sr--lD-~I;c object" option from a tools menu in the graphical user intPrf~-e The user enters '~pluresjor~
"stl dPnt " Nclass," and "person" in order to create the four s .~ ;c objects 10, 20, 30, and 40. Once the semantic objects have been created, a user then enters ~ ib,~c5 into those semantic objects by choosing a profile ofthe desired a~ ule and d~ag~æ
25 the profile into the bO""-1D Y ofthe semantic object. For example, to create the salary Jul~pr~ the user selects the ~;Wl~ l~ profile from the proffle ~D~age- 50 and drops it into the profcs~or seman~ic object 10. The user can then use the plupe.ly sheet 60 shown in FIGI~RE 3 to change the name of the cull~ ibllle to so~ g that makes sense for the user. The user can then atso change any of the ~ l,u~e 30 plupe~ s using the plo~ sheet 60. In order to create the r~lD';onC~;ps b~L~ce.l the ~rn~tic objects, a person selects one semantic object by cl~L i.~g a mouse pointer in the square shown in the upper right-hand corner of the semantic object and physicatty places the mouse pointer in the bounds of another semantic object. For example, to aeate the relationship bet .~ student and class, a user would select the 35 ctass sPm~-~tic object and ptace it within the physicat b~ d~;es of the student semantic object. This action causes the system to aeate an object link ~l. ibule called wo 95/12172 2 ~ 7 5 PCT/US94/1035S

"class" and place it in the student sçms~ tic object, as well as to create an object link ule called "student" and place it in the co-l~*,ondillg class semontic object. In order to create a parent relotionchir bet~en a sPmorltic object and its parent type, a user selects the sPmsntic object by rl;~ L ;iv a mouse pointer in the square in the upper 5 right-hand corner of the sPmontic object while cimllltonP,o~lCly h~'~i~ down a shift key on the cc .l~uler. The system then produces a small s~ty~c icon that is placed in the physical bo~ ~A_ ;~s of its parent semantic object. For eY-o-rnple, in order to create the ~ ul~s that signify the parent relotinnchir ~el~ student and person, a user selects the student semantic object while holding the shift key and places the s~t)~l,e 10 icon within the person sçmo~ltic object. Placing a ~t~l,e ~ u~e in the personsemantic object ~lu~n~;r~lly causes a parent-type ~ ib!~le called "person" to beplaced in the student semantic object.
Once the user has created and v-o-lid~sted the sçmsntic object data model, the user then selects the 'lg-ne.ale schema" option and the system produces the set of 15 co~ AQ or fim~tion calls which in turn cause the dqtqkaQe p.u~u-- to gene.ale a database schema co..~ponA~ to the sF-~ ;c object data model created.
The present i..~,c; .lion is implc~ 1çd using a general pul~ose, desktop, or pc.~onal co...l-ul~ ~ similar to that shown in ~IG~RE 3A. The co~ ul~r in~1udes a central proc~Qs,~e unit (CPIJ~ 70, ...e..lG.~ 72, a disk drive 74, a display screen 76, a 20 L.~Ga~d 78, and an input poillting device, such as a mouse 80. A s l;t=qble cc~ uier progl~ll, having the filn-~.tinnQ desi-;l,c;d below, causes the co--~l-u~ to provide for the e.~lion of a s~nqntic object data model and for the ~ and ll~"..Qr5" ,..~1;nn of the semantic object data model into a set of commands that cause a d~ a~e program to create a database schema that mirrors the semantic object data model.In the present lJ~ ll~ Pmbo~limPnt ûf the invention, an object-o.;P ~lP~d prog,r~ ge such as C~ is used to produce the prograrn that OpC.aleS
under a graphical user interf~ce, such as MicrosoffTM Windows 3.1, and the semantic object modeling bll;ldi~ blocks defined above. The following de~ç ;l~1;nn does not discuss in detail the ~ ul- ~ code and low level ruulines that operate under thegraphical user inte~ e nor details of the ~aphiCal user intPrf-~e However, theseluuLI~:S are considered to be either well known to those of oldinat~ skill in the art of c~...~l.u~e~ pro~ g or easily det~ ;n~-d based upon the flow charts provided in the ~Lawings. As will be fully d~ eA the sPmontic objects, n~l~;bulec~ and theircorrespo~ g profiles are each created with a C~ class. The following tables set 35 forth the data ~ ke s that are .~ ed by each of the C~ classes and used to create the semantic objects, ~ ib~lles~ and profiles.

2.43 -12-Class Album Data Member Data l'yPe Name Text Creation date Date Created by Text ~ont~nts Unorder~ list of pO~

Class Sl --'A"~;C Object Data Member Data l'yPe ID Integer Name TEXT
Cartinn TEXT
De~ ion TEXT
Contents Ordered list of pointers Class Simpl Value Profile Data Member Data l`~rPe lD Inte~er Name ~EXT
cgptir n ~EXT
De3~ ;o" ~EXT
lD Shtus (Unique, non-unique, none) Value Type Any DBMS Dah Type Len~th Integer Fnrmat TEXI
I~tial V lue TEXT
M~Caramality Integer MsYC~-~nality Irtege-Derived ~ il,u~es L st o pO .l~t,~
R~e.e.~clng Profiles L st o~ po .

Class Objec- Link Profile Data Member Data nPe lD Integer Name TEXT
C.~rtion TEXT
Dcs.;.i~lion TEXT
ID Status (Unique, non-unique, none) MinCard~nal ~ Inte~er Csr~.ina_ty Inte~a Base Sem~nt c Object P~inte-Derived ~ u~cs L st o 1~ .ltc;.
R~felenc.ngProfiles Lsto polc~

Class Simple Value Attribute Data Member Data I~Pe ID Inte~er Name TEXT
De~.;~)tion -E.'~
Cs~rtion -E,XT
lD Status (Un que, non-unique, none) Value Type Any DBMS Data Type Len~th Integer Fonnat TEXT
IntialVlue TEXT
M nCaralnali~y Inte~er Ms~s~ ty Int~er Cc ~ Ponter Ponter Base Profile Po nter ~\7 ~43 Class Group Profile Data Member Data TYDe ID Inte~er Name TEXI
Csrti~n IEXr Dc~liplion TEXI
ID Status (Unique, non-unique, none) MinCard~al ty Inte~er MaxCar~inaitv Inte~er MinCount ~te~er MaxCount ~tega Format TEXI
Derived~ es Lsto po.l~e.s Cont~ntc L st ot pO~lh .
Ref~r~cillg Profiles L~st o . po.l1e Class Gro p Attribute Data Member Data TvDe ID Inte~er Name TEXI
Caption TEXr De~ Jtion TEXT
ID Status (Unique, non-unique, none) MinCard nality Inte~er MaxCar~linality Inte~er MinCount Inte~er MaxCount Integer Format TEXr Co.. ~ Pointer Poi~ter Contents Or~ered list of poi Base Profile Po nter WO 95/12172 ~ ¦ 75243 PCT/US94/1035S

Class Forr~ula Proffle Data Member Data Type - lD Integer Name TEXT
Caption TEXT
Des~ tion TEXT
~A~ ;on TEXT
Formula Type (Not store~, stored) Value Type Any DBMr Data Type Length Inte~er Required Fla~ (Yes, No) Format TEXT
Derived ~ll.ihule5 L st of p R~f.,.~.~cing Profiles L st of po nle,~

Class Formula ~t~nhute Data Member Data Tyl~e ID Integer Name TEXT
Caption TEXT
De3~liplion TEXT
~A~ ;on TEXT
Formula Type (Not stored, stored) Value Type Any DBMS Data Type Len~th Inte~er Required Fla~ (Yes, No) Format TEXT
Co~ n~- Pointer Pointer Base Profile Pointer Class Object Link ~t~nbute Data Member Data TYPe ID Integer Name TEXI
Des~ Jtion TEXI
Caption TEXr ID Status (IJnique, non-unique, none) MinCard naL-y Inte~er MaxCar- ina.ty Intr.ger CO.. I~;nF.I Po nter Po nter Base Profile Po nter Pair Pointa Po nter Class Parent Attribute Data Member Data TvPe ID Intega Name TEXI
Capti~.n TEXr DeS~ ion IEXI
COnlA l~a Pointer Po nter Pair Pointer Po nter Base Profile Po nter Class Subt~pe ~t~nhu~e Data Member Data Type lD Inte~a Name TEXI
Caption TEXr Desaipt nn TEXr Requireu Flag (Y~s, No) Con'~;~-F,~ Pointer Po nta Base Profile Po nta Pair Pointa Po nta W O95/12172 PCTrUS94/1035S
-17- 2 1 ~52~3 Class Subtype ~ Jroup Attribute Data Member Data l~v~e ID Integer Name TEXT
Caption TEXT
DeclilJt on TEXT
Require._ Fla~ (Yes, No) MinCount Integer M~xCount Inte~er Cc.. ~ r Pointer Pointer Contents Ordered list of pointers Creating the SPm-sntic Object Data Model The above-l~rerel ced tables des~ e the C~ classes that are used to create the building blocks for the sen~sntic object data model. FIG~RES 4-15 d~PQrr;he the operations that must be cnmp'eted when a user creates an in~t~nce of each of thevarious building Uocks as the user defines the semantic object data model des~ ~;hed above. The user ~ pliQI ~Q this task by interacting with the user intp~ce on display screens such as those shown in FIGVRES 1, 2, and 3.
FIG11RE 4 shows the steps impl~ 1ed in the present invention when a user creates a new semantic object. First, the cc...~ slloc~tes llle.lloly for a new semantic object block at step 100. Next the cc....p~"~ assigns the semantic object a unique i~PntifiPr at step 102. In the present pr~ft,l~,d ~ bGt~ a counter is il~clt~ 1ed each time a semantic object, profile or ~s.~ e is created in the ~ ;c object data model. The value of the cou~lcr is ~ei~P~ to each object, ~ e or profile in order to uniquely identify the semantic object, profile, or ~ il,ule in the semantic object data model with a .-v--- --;c value. At step 104, the user is prolll~)led for a name of the semantic object created. The name is tested to d~ t~ ...;-.c ~Lclher it is unique unong all the semantic objects created in the semantic object data model, at 20 a step 106. If the name is not unique, a ..~ ;c suffix is added to dilre~ liale the name of the semantic object at a step 108. For example, if two sPn~sntiC objects are created with the name "person,N the second one would be given a name "Person_l" to - dilr~renLale it from the former. Once the name of the semantic object is dct~ ;ned to be unique or di~,e ~ eA the caption is initisli7P~ to be an empty string at a25 step 110. The dC~v~ n is then initisli7ed to be an empty string at a step 112 and, finally, the cG..Ic ~1~ data ...~-..be~ of the sPmqntiC object is initisli7çd as an empty, ordered collectinn of pointers to ~sttrihutes that are co..l~;ned within the s~m-sntic object at a step 114.
As intlirqte~ all semantic objects within a particular semantic object data 5 model are stored in an album. The album is simply a list of pGillt~l ~ to each s~
object. Each time a new semsntic object is created, a coll~s~ondill~, pointer to the new sem-s-ntic object must be added to the co~ list ofthe album.
Once the semantic object has been created, the system ~llc. ~I;cslly creates a cGll~,~ond~g object link profile according to the steps set forth in FIGURE 11.
10 Object linlc profiles are used to relate one semantic object to another within the semantic object data model. For example, as soon as the user creates the student~msntir, object 20, shown in FIG~RE 1, the system creates a cGll~,~ohd;llg object link profile based upon the student semantic object profile. The object link profile is used by the system to create ~ll~ond~g object link ~ cs that related the 15 student s~ 1;C object to other semantic objects. To create the object link profile, the system first provides a pointer to the semsntiC object that causes the c<~ ~on&~g object link profile to be created at step 400. Memory for the new object link profile is then created at a step 402, and the profile is ~ y-ed a unique id~ r at a step 404. The name of the base sem~tic object ~ ed through the 20 pointer l~c~;~cd from a step 400, is copied to the name pro~c~ly of the object link profile at a step 406. At a step 408, the system dele~ es whether the name is unique among aU profiles in the semontir object data model. If the name is not unique, a ..-~ ;c suffix is added to di~c~ll;ale the newly created profile from the r~ g profiles, at a step 410. Once the name of the object linlc profile has beenLlrc~ 1; lcA the caption is in;tisli7Pd to an empty string at a step 412. Next, the des~rtion is; ;li~o~ d to an empty string at a step 414. At a step 416, the ID status iS initi--1i7~d to "none.H As d~-~ibe,,d above, the ID status of a semantic object or an e ;..A~ c~ lLr or not the ~ il.u~e is used to uniquely identify an instance ofthe s~ .I;c object.
After in;ti91i7iT~ the lI) status, the .-~ . cardinality for the object link profile is initisli7ed to zero at a step 418. Again, the .~ . cardinality refers to the ..-:~-: ...~-.. llu-l~r of object ;~t~ es an object link a~ ule derived from this profile must co~nF~1 to in order for the data to be valid. The .~ cardinality for the object link profile is set to one at a step 420. At a step 422, the base semantic object 35 pointer is set to the address of the s~ , object that caused the object linlc profile to be created. Finally, in a step 424, the derived ~ it,ule list is initi~li7ed as an W0 95/12172 2,1 7 5~ ~3 PCT/US94/103SS

empty, unordered collectiQn of poil.lel~ to object link ~ u~es that are derived from the object link profile.
As ;.-~;c3ted above, sçmqntic objects are defined by the ~ll. ib~lles they contsin An ~ e defines the charactçnctics of the s~ l;c object as well as r~lsti-~nchipsS be~ sÇTnsntic objects. The most C~ n type of ~ e is the simple value e that holds a single value in the database. All simple value ~s~ttrih~ltes are based upon some co.le,pQ~ g simple value proffle. The logic system ofthe presentinvention provides the user with a predt~fint~ list of typical simple value profiles that can be used to d~scrihe an object. Such simple value profiles include: area code, city, 10 cull~n~;y smt~llnt des_liption, event date, event time, identifier-mlmt~ric, idPntifier text, local null~ percent, person name, ~lu~ltily, state, street, and ZIP code.
However, if the user desires, he/she can create a simple value profile and use it in any llwllbcr of sPm-s-ntic objects in the semantic object data model. For example, a user may wish to define a simple value Hsalary" to de~i~ ibe how much money a person in 15 the database makes per year. While a user could utilize the idl I;r~r mlmPriC profile for this, a ~ ~ :tc.~.; t,d profile may better suit the user's needs, bec~ ~ce it is more easily cico~ble. ~ itionslly~ by having a ~eC;r~ y created ~ e profile, a user can easily change the prop~,.lies of any s~ le created from the profile by simply changing the profile prop.,.lies. Becwse each profile ~ c a list of derived ~ lcc, it is a simple matter to update any propc.l~ of all ~ e5 based upon the profile.
FIGllRE 5 shows the steps taken by the present invention to create a simple value profile. First, s~lffilY~-nt ~ "llGl~ iS Dl~oçDt~Pd for the new simple value profile at a step 160. Then, the new profile is ~c~;g,-ed a unique integer irlPntifiPr at a step 162.
The user is then prc.lll~ted for a name for the profile at a step 164. If no name is provided, the system gives the ne v profile a default name of "value." A~ a step 166, it is d~,~e~ d ~.hell,~r the name of the profile is unique among all profiles within the semantic object data model. If not, a nllmeric suffix is added to d;lIl re,l~lc the name of the new profile at a step 168. Once the name of the profile is d;l~t,.cnl from all other profiles in the sP-~ ;c object data model, the caption pr~e.ly of the simple value profile is in;~isli7ed as an empty string at a step 170. The caption p~upc.ly provides an Dll~ field title to be used on a form or report produced by an application l/lU~ l a~eS~ the database whose schema is defined by the ~ ;c object data model.
The dP~ l;nn prop~,ly of the simple value profile is initisli7Pd as an empty string.at a step 172. The ID status plupC~Iy is then initisli7P~d to "none" at a step 174.

1~15~43 -20---At a step 176, the value type is initisli7ed to "text" at a step 176. By 4l~q~ ? the value type of the proffle, the user can select the type of data that the simple value profile ,~ esenl~. The user can select any of a predefinçd set of co~ sn DBMS
data types, inr~ e text, currency, date, time, memo, tiny integer, short integer, long 5 integer, true/false, Cuwllel, flnatin~ point, double floq-ting point, OLE object, and binary. Once the value type has been initisli7ed the length pr~p~;lly of the simple value profile is initisli7Çd to ten at a step 178. As will be app-~;cialed, the length prop.illy is only useful with variable length value types.
The format pr~pe.ly is i..;~ d as an empty string in a step 182. The format 10 prop~lly defines a field that holds data to be used by a dtql~ hq~e. &pplic~ n pr~g.~ll in order to d~lr~.~- .e how the data is to be d;~la~ed. The initial value prop~,.ly for the simple value profile is initially defined as an empty str ng at a step 184, and the .-. - :-.--~ .. cardinality for the profile is set to zero at a step 188, while the .-~
cardinality is set to one at a step 190. Finally, the derived ~ plùp~ list forlS the simple value profile is initiqli7ed as an empty, u. ord~d collectinn of pointers to es that are derived from the newly created simple value profile at a step 192.
While ..sd~ g the data to be stored on the database, the user creates semantic objects and places ~ les within the s~ q ~1;r, objects. The user can add a simple value ~ e to the s~ ..q--l;c object by sFlo~ dragging, and dropp,-.~, a 20 simple value profile from the profile .--q~ 50, shown in FIG~lRE 1, into the s~mantic object. Once a simple value profile is d,upped into a sc .ql-~ie object, the system creates a ~ll~sl,onding simple value ~ e These steps are set forth in FIG~JRE 6. After the simple value ~ ule is created, the system ;------o-li 1~l~/ inserts it into the sP--..q .l;c using the steps shown in FIGI)RES 16 and 17 as des~ibed below.
R~ . to FIGURE 6, the system first gets a pointer to the coll~ Qnf1 ~g simple value profile at a step 210. Next, 5~ r;~ ~1 n,e.l,Gly is ~tq-lloc~1~ for the new simple value ~ ute object at a step 212. The new simple value object is then given a unique integer i~ 1;r,rr at a step 214. In a step 216, the name, cartion~ de-~pti~n~
lD status, value type, length, format, minimum c~L~alily~ and .~ -.. cardinality~"ûp~,.l;es are in:~isli7ed from the coll~onL,g p,up~ly in the simple value profile used to create the simple value ~ ib.llç If at any time the user desires to change any one ofthe piope,l;es ofthe simple value Pq~l~il,ule as they apply only to the ~m9ntir, object in which the Y~ ule is placed, the user may do so using the prDpe.ly sheet 60 shown in ~IGI~RE 3 and desr~ il-e~ above.
The c~ propelly is set equal to null at a step 217. When the simple value ~ ule is ills-~led into a s~ -,l;r, object, the CQ~ .ed pointer will be set WO 9S/12172 ~ 1 752~ ~ PCTrUS94/10355 equal to the address of the co~ g sPm-sntic object. If the simple value sttribute is placed in a nested group, the co~ prope.ly will be set to point to the inn~prmost group that co..~ c the ~t~ (e during the routine that inserts the Al~ e At a step 218, the base profile pointer is set equal to the address of the simple value profile 5 from which the -Il.ib~e was created. Finally, at a step 220, a pointer to the newly created simple value a~ e is added to the list of the derived al~ 1,les ..~ .d by the COll~ ~oh~ simple value profile. The derived ~ ;b.~le list maintained by a simple value profile is used by the system to effect e~ ;5 to a prop~,.ly of allib~ s based upon a profile if a user c~ s the prop~lly in the wll.,~l~Q~ 8 10 profile.
Some ~ ;blu~s used to de-~rihe a sPmsntir object are nnrmglly thought of as groups. For example, the address ~ lle shown in FIG11RES l and 2 iS used to define where a person lives. Tnr~uded in the address group are street, city, state, and ZIP code simple value All.;lil"es A phone group ~ u~e inrl~ldes area code and 15 local number simple value ~ p~ In f~diti~nn to the prPAPfinPA group ov~ ,vlesfor address and phone provided by the system, a user may define their own group by first C~ g a group profile. The profile can then be used to g~ne.ale CGll~ O'~ ggroup ~ es in one or more s~ ;c objects.
FIGURE 7 shows the steps p rO.--~ by the system to create a group profile.
20 First, ~- rr.~ .llOl~ is -s-11oevste~ for the new group profile at a step 240. The group profile is then ~c~ d a unique i-lP .1;rr at step 242. At a step 244, the user is prollll)led for a name for the group profile. If no name is provided, the system will use the default name "group.N At a step 246, the system d~t~ s whether the group name is unique among all groups in the s~ object data model. If not, a 25 nUmP~riC suffLx is added to d~ r~.L~le the group name from related names at astep 248. Next, the caption and d~ on prop~ll;es of the group profile are j-~;tjoli7~ to empty strings at steps 250 and 252. The lD status is then initio1i7~P~ to "none" at a step 254. The .~ -.:-. ~-.. c&ldil~al;ly is ;--~ d to zero at a step 256 while the ..~ .. cardinality is ;";1;91: P~ to one at a step 258.
At a step 260 the .. :~.: .. -~-.. group count is i~ is1i7~i to zero and the ~
group count is in;~isli7P~d to '~" at a step 262. The .~ u-.. group count pr~c.ly defines the llulll~ of ~ s within the group that must be present in order for the group to be valid. Si~nilsrly~ the i~ .. group count plupe.ly defines the ..u--~ r of ~ cs that can be present in order for the group to be valid.
35 For example, ~ppose a group profile is created called "Lunch Special." The group co-~ 10 simple value a~ .ules each dcsv~ ng a particular side dish. A ~--clc-..

~ ~,15%~3 -22-must select two items but can select no more than three items. Thel.;role the group has a ...~ -.. count of 2 and a .~ -.. count of 3. An n~tlitionsl use for the .. and ...~ -. counts is to specify exclusivity, which is particularly useful inb~y~e groups deç ;I~ed below. For example, the P~.~o~lly~e s~lyl,e group shown 5 in FIGVRES 1 and 2 co~ two i~ly~Je all-;l~ c~. By s~,eciry,l~ the ...;-.:-.......
count of the P~ G1IIY1JC group to be 1 and the .--~ count to be 1, the user jnAi~ ates that a person must be either a p uressor or a shldçnt~ but not both. If the subtype group is r~uiled, then some choice must be made (i.e., a person must be either a student or a p,o~ssor), but if the group is not l~uilt;d, then a person might 10 be neither a student nor a proressor.
The format plopel~y for the group is in;fisli7ed to an empty string in a step 264. At a step 266, the co~ .,lc plopc.ly ofthe group is i~ d as an empty, ordered csllection of pointers to the profiles that are cc.~ -Pd within the group profile. Finally, at a step 268, the derived ~lI.ib~ s list is in;~isli7ed as an empty, 15 ul~o~c~d collectir~n of poul1e ~, to group ~ ibu~5 that are derived from the newly created group profile.
Group profiles will usually have other profiles added to their CO-~1ç..~ Iist before being used in the sP~sntic object data model. These n~rlitionc are pk- r~.. cd using the r..ecl~ defined in FIGI~RE 18. Once a new group profile has been 20 created, the user can create a col,,l-onAi~g group ~ le in one or more semantic objects by s~lecti~ the group profile, ~g, and dloppu,g it into the bo~ c ;cs ofa semantic object. Once a group profile is dlopped within a semantic object, thesystem creates a cc",.~4oh-l;~g group a~l~ibule according to the steps shown in FIGVRE 8.
In order to create a group, ~ lç, it is first necessary to get a pointer to the c~ -Qr.-l;~ group profile, as shown at a step 280 in FIGllRE 8. Next, ~ e ~1 1U&UO1~1 jS allcr7ted for the new group rll e at a step 282. The group ~ e is ~C~ d a unique i~lentifi~r at a step 284. At a step 286, the group's name, caption dc~ ;nn ID status, ~ - cardinality, ----;-- ~- cardinality, minimum group 30 count, --;.-----group count, and format are initi~li7~ from the propc.Les of the corresl,ol~ g group profile. At a step 288, the c~ --c pointer is set equal to rn~ll.
When the group nl~ ule is inserted into a ~m~ntic object the co..l~ . pointer is set equal to the address of the semantic object or the group all~ il-ule in which the new group ~ v~e is logically inclllded using the ~ d5 of ~IGURES 16 and 17. If the 35 group ~l l ;l,~e is nested in another group al~ ul e, the c~ 1 h;~l~r pointer will be set to point to the i-~ ost group. Next, the all~il-ul~s that are defined by the cc ~Ir~ list WO 95/12172 PCT~S94/103SS
_ -23~ 1 7 5~3 of the group profile are created. For each profile in the co..~ list, the systemcreates a new i" ~ e and places a pointer to the new ~l l il ~lle in the contPntC list for the new group ~ e using the ",l l~.o~l~ of FIGllRE 17. Finally, at a step 292, apointer to the new group ffll ~ ibule iS placed in the CGll-. s~o~ding group profile's list of 5 derived ~ ule~5 Another type of sttribute used to model the data in the sPnlsntic object data model is the formlllg ~ll-il,~le. As will be app~ec;aled~ forml~lsc c-s~ s-te values or mqrlirllste data types according to a predPfimPd set of CG~ n ~ ;lh~ ;c operators.
The type of operation pe~ d d~fn-~s upon the types of the ope,~u~ds and 10 eA~ ss;on of the f~- .--- 19 For example, the r1~1iti~n of two values of integer types produces a third value of integer type, while the ~dditi~ n of two ~Al,iess;ons of string type produces a col~ ed string-type eA~ s~on.
FIGllRE 9 shows the steps taken by the present hl~e"lion to create a new fnrmllls proffle. First, a new block of Ille.l.Gly is -s-llocsted for the new profile at a step 320. Next, the profile is sQQignPd a unique integer id~ ;re~ at a step 322. At a step 324, the user is pr~,llllJted for a name for the formlllo If no name is given, the - system provides the default name "formllls " At a step 326, the system dete- -- ~f s ~Lelh~r the name is unique among all the profiles within the semantic object data model. If the name is not unique, a .--~ ;c suffiA is added to the name to 20 di~..e.ltiale it from similar names. At a step 330, the caption of the fonnllls is in;~isli7ed to an empty string. At a step 334, the e~,less;on of the fonm~lQ is initisli7~d to an empty string. The eAI~iess;on is a string that is used to define the r~.. l~ being C91~`yl~f~
At a step 346, the fonmlls pl~ ly is initisli7~d to "not stored." The fonnul9 25 tgpe piop~ly ;-.dir~ 5 to the system ~h~lL~r a value for the formllls is to be stored in the relational database or is c~ led each time the database progl~ll is ~un. Thevalue-type propc.lr of the f ~ ID iS always in;ti91i7ed to type "teAtH at a step 348, while the initial length is initisli7P~d to ten at a step 350. The le~luiled flag is initisli7Pd to "no" at a step 352 and the format prop~.ly that defines the way in which the output ofthe fic.. ~ is di~l&~d is set as an empty string at a step 354. Finally, the derived 5 piOpC ly of the rO.. I9 prof~e is i~ l;DI;~d as an empty, ullold~d of poinltl~ to fomlllls ~ es that are derived from the new fQn- ~lls profile at a step 356.
Once a user has created a f~ rmlll,s profile, the profile can be il~c.led into one 35 or more semantic objects to create a cGIl~sl.onding formllls attribute FIGI~RE 10 defines the steps r~uiled to create a ffirmlll9 ~ ibule. First, the system gets a 5~ -24- PCT/US94/10355 pointer to the coll~,s~ Ai~P. formlllq profile in a step 380. A new block of m~...Gl~ is ~'oc~sted for the fo""~ n~ ule at a step 382. The new formllls ~ u~e is -rd a unique integer id~ntifiPr in a step 384. In a step 386, the name, çsrti~n de-~riptinn ~ le~;on, formllls type, valuetype, length, ltlu.rtd flag, and format 5 ~,rope,~s are initisli7ed from the co.l~or.~ g rO....l~ profile l,lopell;es. The co~lP:~P~ pointer for the formllls ~ ;bule is set equal to null. When the fcrmllls-e is inserted into a semsntic object, the co~ ; Se~ pointer will be set equal tothe address of the s~msrltic object or group ~s~ ule in which the fc" .~ ls ~ ihlJle is logically ;--~ ed in a step 388 using the metho~C shown in ~IG11RES 16 and 17.
10 Next, the base profile pointer is set equal to the address of the co,l~,s~,onL.g fc~ ul~
profile in a step 390. Finally, a pointer to the new fc""~ ~Is ~ ule is added to the co--.~pQn~i~ fo~ -----l~ profile's list of derived -9~ ;bU~J at a step 392.
As cics~ ed above, once a user creates a semantic object, the present invention al~lcs~ slly creates a ccsl-~s~,~nding object link profile. The object link 15 profile is used to create object link ~stt~ihutes in the semsntic objects that specif~
lel~;ol~ bet~.~,e.l the various ~ms~ltic objects. For example, in ~IGVRE 1, a pair of - object linlc ~ les co~ ~l the pr~ssor semantic object and the student semanticobject. The name of the object link from the p~ufessor to the student is "advisee" and its cardinatity is O.N, in~1ir?ting that a pr~f,ssor may have zero advisees or may have 20 more than one. Similarly, the student semsnti~ object has an object link s~ ib~e called "advisor" that links the student sPmsntic object to a proressor semantic object.
The advisor object link has a cardinality of 0.1, i~ that a student might have no advisors, but has at most one advisor.
The present u.~elllioll creates an object link s11~il,u1e when a user selects an25 object link profile and drops it -into a semantic object or selects the entire P -~ ;c object by clicking the mouse pointer in the box in the upper right hand side of the semantic object and drops an icon p,u~ced by the systan into ano~ r S~.mgnti~
object. FIGURE 12 shows the steps takan by the present u~ tion to create an object link r~ ule First, the system gets a pointa to the cGll~,por-1: .g object link 30 profile upon which the new ~ e is based at a step 440. At a step 442, a new block of lu~ GI~ iS ~11ocvsted for the object link ~ttrihute. The new ~ ;b~le ised a new unique integer ~ ;r r at a step444. The name, cartion des~pti~n Il) status, and ~ and r.. ~;.. ~ cardinality prope,lies are initialized from the c~ ,o~ 8 object link profile plope,lies in a step 446. Next, 35 the cG..1~;- er pointer is set equal to Mlll at a step 448. The cG~ pointer will be .J~led to reflect the address ofthe s~ ;c object or group in which the object link WO 95/12172 PCTfUS94/10355 a~ ule is logically in~ ded using the methods shown in FIGllRE 16 and FIGI~RE 17. Initially, the pair pointer that points to a co.,~,sponding object link b~e rlisposed within the r~e e..c-;d sPmsntiC object in~ qted by the object linkule is inifisli7fA to null at a step 450. The base profile pointer is set to theS address of the object link profile on which the object link ~tttibute is based at a step 452. Finally, a pointer to the new object link aftrib~lte is added to the base profile's list of derived ~ es at a step 454.
Another ~I.;l.u~e similar to an object link ~ lle is the parent nttrihute The parent ~ u~e allows a user to specify that a 5~ JC object is a s.~ y~e of another ~ ic object. For eY~nlpt~, as shown in FIGI)RE 1, the student and professor semantic objects both contain parent-type n~ eS called "person." The person "le intlil~stes that both the plo~sDor and the student ~ ;c objects are PC.DOnS
(i.e., are D~lyl.es of the person semantic object) in the data model. RecsllQe a parent-type al~ e is so similar to the object link type ~ ule.s, no CO11~On~ g parent-type profiles are scp&alely created. T_ t~ ~ the object link profile is used.
As shown in ~IGIJRE 13, to create a parent ~Il~;I,l,le, the system first gets a pointer to the COl-. ~onding object link profile that is ~Q~cr~sted with the parent-type semantic object at a step 480. A new lll~,.lloly block is ~l~oc~ted for the new parent-type fll~ u~e at a step 482, and the ~ ibllle is ~c-ig,-~d a unique integer itlPntifi~r at a step 484. At a tep 486, the new parent-type ~ le's name, caption, and de-~ptic n are initisli7ed from the coll~oh~ object link profile propc.lies. Theco~ nf- pointer is set equal to null at a step 488. The pair pointer that points to the COll~ r~on~ s.-bt~rpc ~ u~e is initisli7~d to null in a step 490. At a step 492, the base profile pointer is set equal to the address of the object link profile used to create the parent ~ll-il~-lle Finally, a pointer to the new parent n~ ule is added to the base profile's !ist of derived h~ JU1~5 in a step 494. The pro~e lies of the parent-type .~1 ;I,-"e will be upcl~'~ when the ~ u~e i9 placed in the ;,~btn,e s~nontic object.
Once a parent-type n~ ule has been placed in a sf~nsntir object, a ~"~ S"I~YIJe ~s~ e is a~ o~ir-olly created by the system and placed in the CO11~ ~0n~ 8 parent semantic object. FIGI~RE 14 shows the steps t. ken by the present invention to create such a cGll~.n~l ~g ;..~ ,e ~ ibule First, the system gets a pointer to the object linlc profile that is a~sor:~ed with the s~lylJe s- .~.zn~;c object at a step 520. A block of llle.llol~ is sllocsted for a new i.u~,e ~11- il~"le at a step 522, and the new ;~l~ye ~ ule is given a unique integer i~lPnfifi~- at a 35 step 524. At a step 526, the name, csption description, and r~.lu- cd flag are initisli7~ from the coll~onding object link profile A-~Qc;~ed with the ~ ,e ~ 4~ -26-semantic object. The conlA;~ pointer is set equal to null at step 528 and will be upd~ted to refiect the address of the s~ .I;c object or subt-ype group in which the new subty~,e a~ I ibule is logically CG~ ~1 when the subt-ype ~ e is .,~_. led into a sP~ n;r, object. The pair pointer is initis1i7ed to null at a step 530~ and the base 5 profile pointer is set equal to the address ofthe coll~spor.~ g object link profile from which the s.-btyl,e a~ ule was created at a step 532. Finally, a pointer is added to the new i,~lyl,e ~ ule in the COll~ Q~ -o?~ object link profile's list of derived s at a step 534.
It is possible to include subt-ype ~ es within a group in the s~montic 10 object data model. An example of a s~l~,~,e group, shown in FIGURE 2, iS the P~ ty~e group c~n~ t~ within the Person ~ I;r, object. This group ;~ 5 that a person must be either a professor or a st~1d~nt Subtype groups are ;-.l1ic~c~
with the s_~ s~pt "ST" next to the brackets that identify the ...- --.1,~- ~ of the group.
~IG~RE 15 shows the steps taken by the present invention to create a s~lbty~Je 15 group. First, Ql1ffiri~nt l.,e...G.y is -o~'eeste~ for the new s.llJtyl.e group vottrih 1te at a step 550. A unique id~ntifi~r is ~ d at a step 552, and the user is prc,r..~ted for the name of the s.ll~tyl c group at a step 554. If no name is provided, the system uses the default name ";~lbtylJe group."
In the p~crc;ll~d forsn of the present ...~ tios~, there are three name spaces 20 within a single ~ ..~1;c object. The first name space holds the names of ~ly~es and ~ty~e groups. No ~ly~e or ;~lbty~e group can have the same name within a single semantic object. S;~n;1s~ly the second name space holds the nasnes of all parent~I.ib~l~es in a single s~rns~tic object. No two parent sttributes can have the sarne nasne within a semantic object. The third nasne space holds the names of all other 25 ~ ibulcs ;~ tP1y within the semantic object. The three di~cr~.lt nasne spacesallow a user to easily model the o;tl1~stinn ~lle.c~r a se ~ 1;c object has an object link ~ ibule and a parent or ~I~I,e ~ ule with the same name. Suppose, for ex~mple, a user creates a semantic object called "Employee". The semantic object has an object linlc z~ bule called "Msr~gern as well as a s.lbty~e ~ ule called 30 "MsnagPrn. This is because an employee may have a ...~n~g~., and a ...~-~ag~r iS an employee. Wrthout allowing the user to have object link ,~ s with the same name as a s~ty~,e or parent, it would be ~,UIl bc~ome for the user to model examples like the one presented above.
The caption and d~s.~ for the s~tyl e group ~ ule are Wtisli7ed to 35 empty strings at steps 560 and 562. The l~..il~d flag is initis1i7PA to "false" at a step 564. The .. ~ group count is initis1i7ed to æro at a step 566, while the - -27- ~1 75~4~

;... group count is initisl;7P~d to "N" at a step 568. The cc.. ~ .er pointer is initialized to null at step 570. Once the s.lbtyl,e group is inserted into a semantic object, the co"lAi--f~ pointer is set equal to the address of the semqntis object or ;,.lbtylJe group ~ ;bule~ which logically co.~ the new ~bty~,e group object using 5 the method shown in FIGllRE 16 or FIG~RE 19. Finally, the c0..~ list of the i~ty~,e group ~ .ule is in;~iqli7çd as an empty, ordered list of pO~lt~ to s. bly~e ;hu1~5 and other s~lbtylJe group ~ ;b~lec that are co..l~i~.ed within the newly created ~l)ty~,e group ~qt~rihute at a step 572.
FIGI~RES 4-15 descrihe the steps imple~F ~1ed by the present invention when 10 a user creates ~ objects, profiles, or All.;l.~JI~ in the course of developing a semantic object data model. However, it is also possible to ~rlirllqte objects within the graphical user intl~rfi se to further refine the data model. As desr~il,ed above, one of the ways of .~ p the model is by sele.,ti~ a profile, dragging, and d.u~.ng the profile into a se - c-.1;s object to create a CG~ Q~ ;b.~e.
FIGllRES 16A-16C ~'o-~rihe the steps taken by the present i.,.~ltion to update the r, ~ li$ object data model when a user has inserted a new A~ I ib-v~e into a semantic object (i.e., the current semantic object). R~-f .;-~g again to ~IG11RE2, assuming the user is trying to aeate the ~.il,.Jle labeled "Social_Sec_No" in the person ~ttnbute 40. The user does this by s .~ec~i~ the "Tdf ~1;r~ ,e~ic~ profile 20 from the profile m~nagPr 50 and Loppil~g the s~ ed profile into the physical ulc ;es of the person semantic object. The user then ~ gf S the name of the newly aeated ?~I.il,~,le to "Soci~_Sec_No" using the propc~ly sheet60 shown in PIGVRE3. The user can then change the ID status, .-.~ and .~
cardinalities to reflect the type of nll~ " i.e., a social s~wily ~ ~, added to the 25 semantic object.
ne~ v- at a step 590, the system gets a pointer to the new zll~;h.J~e being inserted. At a step 592, the system d~tf ~' "es ~h~ ~ the user is ~ t;~g to insert a parent ~ "e that is derived from a profile, which is based upon a semantic object that is a ~ ,c of the current semantic object, or is based upon the same profile as a 30 parent ~ ib~"e that the s~ms~lti~ object already cc.~ In the present example,neither pr~fessor nor student may be a parent type of person, since the parent a~ L"e that wouwd specify that re1stir~nchip would be based on an object link profile based on the person semantic object. ,S;rn;ls-ly, neither p,ofessor nor student may have a second parent a~ ule based on the person semsntic object, since they each35 already have one. Because the p~ufesso.~ and student semantic objects are alre. dy direct ~bt~l,es ofthe person s .~ ;c object, another such conl-e~ l- is l~v~.d~

If the answer to step 592 is yes, an error mPss-s~e is produced as in-lir,~s,ted in a step 594, and the user is not allowed to insert such a parent s-ttribl1te into the current semantic object. At a step 596, the system dele~ s ~l,~,lher the user is all~ t;~-~to create a s~ly~Je ~I~.il,ule created from a profile that co,l~,~onds to a semantic 5 object, which is a parent of the current semantic object, or is based upon the same profile as a subtype ~ "e that the current semantic object already c~n~ c Using the model of FIGURES 1 and 2, step 596 pl~ ~enls a ~ly~e ~sttribute based on theprofile created from the person sPms-ntiC object from being insc.led into either the proressor or student ~...~.~1;r objects. Similarly, no nd~liti-ns1 ;,~t~l.e ~ ibu~es 10 based on the profiles created from the pr~ressor or student sPmsntic objects may be ed into Person semantic objects. If the answer to step 596 iS yes, an error intlicptinn is produced at a step 598, and the insertion is not allowed.
~ c - ":-~ that the user is not ~ 8 an illegal insertion of an ~ ule into a semantic object, a pointer to the newly added ~ e is in~ e.d in the current 15 sernantic object's CC~t~ -lC Iist at a step 600. Next, the co-~1Pi - ~ pointer of the inserted ~l l - il -"le is upflr~e d to point to the current sen~gntic object at a step 602.
The system then ensures that the name of the newly added nll~ il "le and all the athilJule~s co~.1e n~, if a i,ulJtylJe group, is unique within the semantic object, at a step 604. If any name is not unique, a ~ ;c suffix is added to the name to 20 dirrt;l.,..~idle it.
At a step 606, the system d~,t~ fs if the newly added snll~ "e is a object link-type ~ il,u~e. If yes, the system ~ 5 ..h~,lh~. the -s,ttrih~lte has ac~ spon.1:-~, paired object link ~ .,le located in al~tlL,r semantic object at astep 608. If such a paired ~ ibule exists, the base profile of the paired object link 25 ~ le is cho~A at a step 610 to be the profile created from the rent semanticobject in which the link ~ ibule has been inserted. If no corresl,o~ g paired ibule exists, the system creates a new object linlc attribute based upon the profile of the current semantic object at a step 612. The pair po~ of the newly created object linlc ~ ule and the inserted object link ~ ule are set to point to each other 30 at a step 614. Finally, at a step 616, the newly created object link ~ ule is inserted into the s ..~-n;c object that is listed as the base object in the profile of the inserted object link obl~;ned at step 590. For example, if an object link ~ ;In~le called student is placed in the class s~m~ntic object shown in FIG~RE 1, then a cGll~spQnA:-~object lirllc is created and placed in the sem. ntic object listed as the base semantic 35 object of the profile from which the student object link was created, i.e., the student g~msntic object.

WO 95/12172 PCTrUS94/10355 ~ -29- 2 1 7 ~2q ~

If the inserted ~sttnhute is not a object link ~ the system dele~ rs ~llellle. the inserted attribute is a parent-type sttnbute at a step 618. If the h.s_l~ed au-il.ule is a parent, in a step 620, the system del~ es if the parent Att~ibute has a paired s~bty~,e ~ ule located in anothe, s~msntir object. If yes, the object linlc 5 proffle ofthe paired s. bty~Je ~l~-il.,le is ch-~e.~ to be the object link profile based on the current semantic object at a step 622. If no co~ JQn~ bty~,e A~ ule exists, a new subtype ~l~. ibule iS created from the object link profile, based upon the current semontiri object, at a step 624. The pair pointers of the pll~ ."es are set to point to each other at a step 626. Finally, the new ~ bt~e ~ llle is hle_,Led into 10 the s~msntic object that is the base object of the profile from which the newly inserted parent ~ ule was derived at a step 628 in the same way . s the insertion des~ edwith respect to step 590..
If the h~.~ed nll~ e was not of the parent type, a test is pe ru~...ed at a step 630 to d~ - if the newly inserted sttnbute is a s~lylJe ~tt~ihute If the 15 al~ - ;l,.~le is a ;~lbtyl~e~ a test is pe fi,....ed at a step 632 to del~ e if there exists a co.l~s~,ollding parent-type ~ ule If the answer is yes, the profile of the paired parent ~ ibule is chA~g~ to be the profile based upon the semantic object that is being added to at a step 634. If no col-~sl ol dil~g parent-type ~g~ ;bu~e exists, a new parent-type ~I~-;I,ule is created based upon the profile Acsocialed with the semantic 20 object being added to at a step 636. The pair pointers of both ~ il,ln~s are then set to point to each other at a step 638, and the newly created parent ~II-il.u~e is inserted into the semantic object that is the base object of the profile from which the s.llJt~e e was derived.
In the course of developing a semantic object data model, the user may wish 25 to add an -s~ ib.Jle to a group ~ il-ule. This change is acc~ hed by sfle~ anbyle within the semantic object data model and dloppil~g it into the group ~I.ibu~e. FIGllRES 17A-17B show the steps taken by the present invention to add an ~ u~e to a group All~ ule. Beginning at a step 641, the system determines if the le being added to the group is a simple value, group, fiorml~la, or object link 30 ~-il,.,le. If the all~ ule is not one ofthese types, an error m~sQ~e is produced at a step 642, ;.~ L~ . the insertion is not allowed. Once it has been det~ f-d that the p~ l ~ ih,~e can be added to the group Attnh~lte, a pointer to the new ~l 1. ibule is added to the group's o~ d co..1f ~ list at a step 643. At a step 644, the c~ pointa of the il~.led ~ il,ule is cl~ ed to the group ~ .,le that CQ~ the new a~ u~e~
A dec:F on block 645 dct~ s if the name of the ~ ilnlle is unique among fi~ eS in the group. If not, a .~ . ;c suffix is added to d~a~.Lale the name at a ~ 7 ~43 -30-step 646. The logic then d~t~ es if the group attribute into which the new ibule has been inserted is the only group that is derived from the c~ onA;.~
group profile at a step 647. If so, then a pointer to the profile of the added ~ le is added to the Cn~ list of the group profile at a step 650. If more than one group5 has been created from the coll~ol1dlllg group profile, a new group profile is created at a step 648. The cr...~ list of the new group profile is in;tiqli7ed to include the profiles of all the ...~ ~hr~ le~ inr1~ldi~ the new .~.f l.br~ u~, at a step 649.
At a step 651, a check is made of whether the current group is contained 10 within another group, i.e., in a "c~ s~ group." If so, in a step652, the logic delf~ f s ~lletl er the c~ group is the only group derived from its CO11~ .~.onA;~g profile. If yes, then the cO1-1f r.1 c list of the co,re,~Qrul;.~g group profile is l,pdsled to include the proffle of the newly added ~ le at a step 655. If thec~ f, group is not the only group created from its coll~syon~ g group profile, 15 then a new group profile is created at a step 653. The co~ list of the newly created group profile is initi91i7eA to include pGhltf;l~ to all the ~ ..b.~ "~s at a step 654. This process cOntin~ S until all CQ~ groups have been Gh~g~A, or until a cn~ group does not create a new profile.
At a step 656, the newly added Dttrihute is CI~F1 - ~A to d~te~ ;--e if it is of type 20 object link. If yes, then the system d~ f s ~,.h~,lLc~ the object link has a paired object link 9ttrih~ltç at a step 657. If a paired object link exists, then the profile of the paired attribute is ~ ~ed to the proffle based on the s .~ ;c object that c~..t~; -e-the group, which inrl~df s the newly added object link ~ u~e~ at a step 658. If no COll- ~,Jo~ g paired object link ~ le exists, then the system creates a new object link a~ e that is derived from the profile based on the semantic object, which contains the group at a step 659. At a step 661, the pair po;.~ltl:i of the iu3- l~ and newly created object link al l - il .utf e are set to point to e. ch other. At a step 663, the newly created object linlc ~ "e is h~led into the semantic object that is the base object ofthe ~lled object link a~ le.
In some i~ r~e~ a user may wish to ch nge all groups in the sPmsntic object data model by cl ~ ; the profile of the group r~ e5 For example, a group e representing a phone ~ r inrl~-dPS an area code and a phone llulllb~r.
However, if the user wishes to allow foreign t~fle~hnl~F, llullll)f;l~, then a plO~;~;On must be made for a coullt ~ code sll~ vlp~ to be il~-.led into each phone luull~er group. This ~l~ndir~r~ is a~c~mp~ Pd by adding a cou.~y code profile to the coll~ondill~, phone group proffle. A coulltl~/ code al~ e will then be ~ .lc...~;cally inserted into each ~ e that was created from the coll~,*,ol di"gphone group profile as listed in the derived ~ u~es list.
FIG~1RE 18 desf~ es the steps ~..rl~....ed by the present invention when a user inserts a profile into a group profile. Begl~ g at a step 66S, the system 5 d~te~ rs if the user is all~ ting to add a profile whose co~ .Is Iist already inc~ es the group profile into which the new profile is being il~s_ led. If the answer is yes, an error ,.-r~cag is pree,lted at a step 667, i..~ that the insertion is not allowed, because it represents a rt~;w~;~e r~l~til n~ip. ~ .g that the profile can be added to the group profile, a pointa to the newly added profile is app~,.,ded to the 10 co..l~ list of the group profile at a step 669. As in~ir~ted above, each profile in~ des a C~ IAi.~-'. j list of the profiles in which it is incl~ded At a step 671, a pointer to the group profile is added to the co~ r ~ Iist of the newly ~ ed profile. Finally, the system looks at each ~ l-ule in the derived ~ es list .--~:-,li :-.ed by the group profile and creates a new ~ttribute from the newly i~ls-.led 15 ~ e profile at a step 673 and inserts it into the derived ~ ;hu~e. Th~ ore, each e within the semantic object album is llpd?~ed to reflect the profile newly added in the group profile.
FIGURES 19A-19B d~, ;l,e the steps taken by the present invention when a subtype or ~ e group ~ ;b~"e is i~ .led into another ~ty~,e group. R~,..~
20 at a step 675, a det~ ....:-.~;on is made if the ~ ule being added is a s.ll)t~,e or a ~btylJe group. If neither, the system produces an error ~allllllg at a step 677,i-~dic~ , to the user that the insertion is not aUowed.
The present invention only aUows ;.~ly~Je groups to include s.ll)t~es or other ~bly~Je groups as ~ h~r Dll~ibules ~C~ 8 that the ~ f-~ te~l insertion meets 25 these requirements, the system d~.t~ ....es ~ll~,lhcr the all~il,.J~e being added is terived from a profile of a semantic object that is a parent of the current semantic object that co~4 ~;~Q the ~l~t~l.e group into which the new all~;l,u~e is being ~_.led.
If the answer is yes, then an error message is produced at step 677, jt~l r~ that the L~Lonis not aUowed, because it represents a ~ _ rPlqtinnc-hip. At a step 681, 30 the system d~,t~ Q, v~ll~.lll~,r the ~ ;c object already CQI~ Q- a ;,.bt~e t~l~ibulÇ~ based upon the same profile from which the new ~ bt~e ~ ule was derived. If so, an error .--~e is again produced at step 677, in~ i~ that the insertion behavior is not aUowed. The present invention only aUows a semantic object to include one s.ll)t~,e ~ )ule created from any given profile.
Once it has been d~t~ -ed that the inserLon p~ ro~........... ed by the user is aUowed, a pointer to the new s.ll)t~e ~ e is ~ls_.led into the ordered cQ~

WO 95/12172 PCTrUS94/10355 ~75~ 32-list of the ~ubtyl~e group at a step 683. At a step 685, the co~ r pointer of the newly inserted al~ uie is c~ ed to the current subtype group ~sttribut~, and at a step 687, the system ~ele~ .es if the name of the ins_. led attnb~te (and the names of all .~ al~ Jlcs if the i~el~ed ~ll-il-"le is a group) are unique among all s.l~e5 and subtype groups co.~ ;-.ed within the sPm-sntic object at step 687. If a name is not unique, a nl~menc suffix is added to it as approp,;ale, at a step 689. At a step 691, the system checks ~.h.,~l.er each s~tyl~e All~ ule inserted has a paired parent ~.ib~le If yes, then the profile of the paired au,ibu~e is c~ ,ed to be the profile based on the current semantic object at a step 699. If the ~ul)ty~Je ~ ule inserted 10 does not have a paired parent all~il,.,le, then a new parent All~ -lle is created from the proffle based on the current semantic object at a step 693. Next, the pair pointers of the subty~,e and newly created parent-type al~ ule are set to point to each other.
Finally, the newly created parent-type all-il.ule is 1l~3_.led into the s~m-s-ntic object that is the base object of the profile of the i~l~, led s.lb~y~e attrib~lte at a step 697.
Formula ~oce~
The present invention allows a user to define a fionnlll? within a semantic object and to have that rO. .--- ~1~ L~ ~ed in a way that makes semantic sense to the user. This object is acc~ liched by P ~7bl ~ the user to express the fo...~ in terms ofthe semantic objects or a~ s c~ .ed within the s~ms-ntiC data model, but not 20 necessarily with the same P-~ I;c object as the fonn~lls ;-ll- ;I,u~e. The system then searches the entire s ~ ;c object data model to det~ f the a~ ihu~e that the user intends to be used in the forrml1q As an example ofthe & ~ ig~ y that can be created within a fc.. ~lr a.~l~;lJu~,s~pose a user has created a semg~tiC object that ~ sc~lts an order form. The orda 25 form in~ es nLullC~OuS J~ il-ul~ S that define the line itans of the order, as well as an object link ~ 1l('., to the C~Y~t~ who placed the order and an object link P~ ule to the sol~cmsn who completed the order. ~ssume that the semantic object order c~"~ e a fc-~ s nTax" which is defined as the ~lu~lily of items in the order ied by the item price and the tax rate. However, the s~ .I;c object order may 30 not include an ~ ibu~e called "tax rate." However, the ~ and Qsl~cmsn sem. ntic objects both include addresses which specify- the street, city, st. te, and zip of where the ssl~cmsn and ~clCs~ live. If state is defined as its own s~ ..s~;c object, it may further include an ~ e called "tax rate." Ther~ru,~, the rY------19 ~I~.il,."e within the order semsrltic object needs to se. rch the entire sems-ntic object dat.. model 35 for the tax rate &lllibule. In this example, both the c~eto~..F,~ and the ssl~Qmsn semantic objects would be linked to the state sP~ I;c object, thus cr~ling an wo 95/12172 Z 1 75 243 PCT/US94/1035S

ymhigllity ~l~ ,r the path to the tax rate was through the c~ctomp~ or through the Q9lPcmgn semsntir objects. If both J:~nces were equ lly far from the formllls ç, then the system would prompt the user to inflicvste whether the system was to use the ~ C-.- 's or the salesman's tax rate.
Before the ~m9ntic object data model is ~ r~ d into a set of lf ~ n~l database tables, the- present invention fic ...ulG validates a fQrmllls ~ ikule by p~. rf.. ~ an e~ ring se. rch for the terms of the fQnnllls with~n the semanticobject data model. Lf there are more than two ways to specify a term in the formuls the system applies a set of rules to ensure that the correct ~ ule is used.
Llt.. ~ rtlaliol of f~ ules is shown in FIGI~RES 20A-20C. To begin i.l el~ lg a fcrml~ls ~ -llç, the _A~)ression pr~p~ly is parsed and to~-eni7p~ at a step 660, in ~IGI~RE 20A Techniques for parsing and to'~ string eA~Iesi~;onsare well known in the art of c~ ul~ proglJ~ g and the,~fole will not be flicc~.s~ in further detaiL After the eAyr~ss;on string has been to~-Pni7Prl~ a test is 15 made in a step 662 to ~ e if the CAIJIeS~Gll iS ~ 1;r~lly correct, i.e., does it ~ .fi... to predrr.~ed allowed .~ ;ral and logical operations? In the present e llbo~ I, plo~;s;ons are m. de for adding, subtracting, dividing, and multiplying as well as adding and subtracting dates and strings. The techniques for B that a ~ I;cal ~,A~ - ;on is ~ -I;r'fly correct are also well known 20 to those of Gldil~y skill in the CQ~ Jul pro~ --~ , arts.
In the present example shown in ~IGI~RES 1, 2, and 3, a student semantic object has a fonnllls z~ u~e for grade point a~,.~e, labeled GPA, which is defined as the sum of (grades)/count(grade). In order to L~ JIet this f~nnu~s coll~,tly, the fo~s pr~cessor must find the term "grade" in the s~ms~tic object data model. Theterm "grade" in the rO-. ---lC can be s~e~;r~ed by the name of the ~ ibu~e itseLf or s~e.,-;fi~d by its path name. In the present example the full path name of the grade attribute is "student classes.grade." The terms "student" and "classes" are lerelled to as path lef~.~. c~s while the term "grade" is the target name for which the system searches.
In order to evaluate a rv~ la, the system beg ns Ico'~ at each rcf~ ce in the path to the target name, i.e., in the present example "student" and "classes." At a step 664, the system d~t~ if the fonnllls plucessor is looking at the first .~f.,.~,.ue in the path to the target name. If the answer is yes, the ru~ S c~ er name and inchlded ~Il.il."~c5 are added to a current ring list of objects being sea.~ ed at a step 666. If the r~f~ ,nce being s~u~l~d is not the first r~f~ence in the path to 2 ~1 5~43 the target name, then only those a~ s cG--l; ;- çd by the previous lt;rel~. ce are added to the current ring list at a step 668.
Reginl~ g at a step 670, the system begins a series of steps that analyze every ~1 1 ib.~e in the current ring list. A de~ir;~ n block at a step 672 delf~ 'FS if the name 5 ofthe sl~ le ,~ 5 the target name. If the name ,..~ç1.~5, then the name is added to a list of --~C1-~5 at a step 674. Lf the name does not match, then the f~ 9 plucessor gets the data type of the ~ "e in the current ring list. Lf the ~ ~ I il u~e is a ~,~IJty~e, then the semsntic object ~.fel-,nced by the s~l~,e is added to a next ring of s to be s~a,cl ed at a step 678. Subtype objects are conQ;d~red by the present 10 invention to be logically farther away than objects that are located in the same semantic object as the form111s gttrib~1te that is being analyzed. On the other hand, parent objects are conQ;~ered by the present invention to be at the same logical~l;Q~Ance as the objects in the semantic object that co~ Q the f~rrm11s ~ Jle.
Thc.~;rore, if the data type is a parent object, then the ~r~.enced s~msntiC object and lS its ~ s are added to the current ring at a step 680.
If the data type is a group object, then the ru~ p occssor proceeds to a step 682a (shown in FIGURE 20B) where the list of the cc -~ ules is addedto the current ring list. For group al~ Q, a dec;Q;on is made at step 684 ~L~ ,rthe system is proces~ ~g the first r~f.,re~ce in the path to the target name. If the 20 answer is yes, then a deriQ;~n is made at a step 686 ~L.,lller the cc..~ of the group ~ e exists in the path to the co--l~ sPmontic object. If the answa is yes, a further deriQ;~n is made at a step 688 to dete~ nF if the parent cc.~ 'S
;... count is greater than one. If the answer is yes, then a d~t~ n is made at a step 690 of whether the type of ~ e being proceQQ,ed is of type s.lbtyl.e. If 25 the answer is yes, then the co-~ e~ of the current C~ is added to the current ring list, at a step 692. If not, then the co-~ er of the current CQI~ iS added to the next ring list, at a step 694. If any of the a~ to the d~t~ n~ in steps 684, 686, or 688 is no, then only the list of the cc.. ~ ules is added to the current ring list at a step 682a.
If the type of ~ le being proccs~ed is a son~gntic object, then the list of all the c~ --F- 's ~ s is added to the current ring at a step 700. Finally, if the data type is an object link, then the &l~ UI~ S of the rerel~ ceed 5' - ~ 1;c object are added to the next ring list at a step 702.
negj~n ~ at a step 709 (EiIGllRE 20C) a det~ n is made if the current ring list of &~ ~ ~ ;bVIeS being seu~ ed is empty. If so, the system searches the next ring list at step 670. Once an entire ring list has been sed~hed, a check is made at a WO95/12172 2 1 752q3 PCT/US94/10355 step 710 to d~le~ r if the match list is empty. If the answer is yes, then a cle~iQ;c.n is made at a step 712 whether aU ring lists have been s~ched. If the answer is yes, an error messo~ge is shown to the user at a step 714, in~i~sti~ that the target name has not been found. If not aU ring lists have been sesrclled, then the next ring list is evaluated at a step716, in accordance with the method beg,.. ~ at step670 de3~ ed above. If the ~ cl-ed list is not empty, a deci~;~n is made at step 718 whether there is more than one path to an ~ ib~e with the given name. If the answer is yes, then the user is asked at a step 720 to identify the ~ le or path to the ~ e that is ;..lenAe~ that the ~ lcl-ed list cG..I~ c only one 10 n~ Jule~ a deci~;~-n is made at a step 722 of whether the entire e,~l"esi,;on has been evslnst~Pd If the answer is no, then a search begins for the next target name at a step 724. When aU al~ ule ~r~.~,.ccs have been ur~iquely id~ d their value types are ~ .ed to ensure validity in their context within the e,~ e~;on Album Volid~otiQn As d~ ed above, before the user can h~ r.. the semantic object data model defined by the album into one or more rPlstiQnsl tables, the album must bev~sliAvs~ed to make sure the user has not created any modPlil e errors.
FIGVRES 20D-20I de~ il.e the steps taken by the present invention to validate a semantic object data model defined in an album. As wiU be ~l;~u~d in further detail, 20 the present invention analyzes the album to make sure the user has not created any ~ul~e r~ l;n~ .s in the data model. For example, a rO.~....Iz attribute cannot contain an e.~"eji.;on pr~pc-ly which defines the fonnlllp in terms of itseLf. S;~ 9rly~
a first s~montic object cannot include an object link ~ u~e which is used to uniquely identify the first semantic object if the object link h~ "e refers to a second sArnsntic 25 object which is uniquely dete.-.:--ed by the first. FinaUy, the v~liAstion routine det~ s if a semantic object exists in the se~qntic object data model Wil}lOUI any links to aU other semantic objects. This cQn~itinn is refe"ed to as a partitioned semantic object data model.
In order to det~ nr ..h~.lll~ a ~Ul~ . rPlstiQnchir exists in the data model 30 or the data model is p~l;l;Qn~A the present invention builds three maps, a circular f~!rrmlls map, a circular II) map, and a partition map. A map is the logical equivalent of an array or matrix. A map differs from a normal array in that the indices can be of - (nearly) any type. For ;, ~t~ " while a slal~da~d array's cC~ntpntc are referenced by ;..A. ;~ the array with an integer (array [2]), maps can use strings for in-lPYine (map 35 [nHe~Uo Worldn]).

~ ~ 5~43 -36-The present invention uses maps to track conl~e.;~ y of certain items:
formllls~, sem~q-ntic object IDs, and the data model as a whole. Each map has a slightly dilfe ~ ul~ose and ~ Ai~ d~rer~ 1l lists of i-~r4- ~ n at each index.
The circular r~ - ""~19 map uses a fonnl~lvq ~ll- il.ule as the map's index and each 5 cell in the map rcfel~nces a list of form~lls ~ eS used within the indPYir~g fc~,l""l!~lS_AI"~,ss;onp~`~?e ly-The circular ID map uses a semantic object as the index and l..ferences a list of other sP~ ;c objects used to uniquely identify the i.~ semantic object.
Lastly, the partitioned album map uses a semantic object as its index but (as 10 opposed to the circular ID map ~ s~ed above) lérel-,. ces a list of all other sPmsnti~;
objects directly ~cfu~nced by object link ~ Ju~çs cQ~ ed sG.,.~,~.l-ere within the ind~P~ri~ s~mqntic object. It should be noted that while for fonmllqc and semantic object IDs circularity (also called self-lef~ ce) is an error, within this context it in.~ vqt~Ps a fully u~ne~1e~d (i.e., nonp&~ilioned) album.
After all of the album's profiles have been e~ e~d (and are without error), the three maps are fully po~ula1ed and are -~ .e,d with regard to their co~-nPc~ ily.
To test circularity, a re~u~ test is applied. This test is as follows:
1) For each nGll~,;s;led index in the map do:
2) Mark it as being visited.
3) For each item in the list rérel~ ced at this cell do:
4) Using the list item as this map's index;
5) If the map index has already been visited 6) if not testing for a partitioned album, return an error ~essa~ intlic~ting a lecu~ _ r~1stinnchir 7) If testing album pall;l;nl~ ~? and not atl cells have been visited a~er appl~ g the I~Ul~e test to the first cell, then the album is partitinn~d Return error.
FIGURE 20D de - il.es the steps taken by the present invention to validate an 30 album. n~....;.~, at a step 1100, the system begins by analyzing each profile within thealbum. Atastep 1102,theprofile'stypeisd~t~ eA Atastep 1104thesystem pe~ r~ a series of steps depe ~ upon the type of profile being analyzed.
FIGURE 20E shows the steps taken when a profile analy~ed in the album vslYstinn routine is a simple valuetype. negJ~ v at a step1140, the system 35 det~, ...:-.~s if the initial value ofthe profile .~dtc1 FS the value type propF.~y. If not, an error messa~e is produced at a step 1142 in-lirqti~ a data type ,~ - -g~ and the _37_ 2 17~243 validstion routine ends. At a step 1144, the system analyzes each sttribute in the profiles list of derived alllibules. At a step 1146, it is dele~ d whether the initial value of the all-ilJule ~ .h~R its value type. If the answer is no, then an error ~F.QC~lge iS produced at a step 1148 inAicv9ti~ a data type -,:c --~ and the v9liA~9tion 5 routine ends.
FIGURE 20F shows the steps taken by the present invention when the profile analyzed in the vslid?ti~-n routine is a fonmlls type. Regl~ at a step 1160, thesystem checks the syntax and ~lul~r of the profile's e A~ ;on pr~p~ly. If the syntax and ~-ul,ar are u.cc,.-~, an &pp.u~,.-ale error message is g~ aled at a 10 step 1161. Once the ~,A~.lession plu?~ of the profile has been cl.~L *A, the system then analyzes each f~rmllls ~ ule ~.~ .ed in the forrnllls profile's list of derived D~ es at a step 1162. At a step 1164, the system p~ r~.. R a fonnllls eAI"~ss;on vsl; 19ti~n as set forth as step 662 in FIGIJRE 20A. In step 1166 it is d~tc~ ed ~ l,.,. the .,A~,lessiol1 is valid. If not, an error l.~FQ~ AicL~ g an invalid 15 ~,A~ ;,;on is produced at a step 1168 and the vs-lidstic~n routine ends. If the cA~.ies;,;on is valid, the system adds the forrn~lls ~ e and ~,f*rel1ced fonmlls u~es co.~ -ed in the eA~,-es~;on prope.ly to the circular forrnllls map at a step 1170.
If the profile being analyzed in the vsl;~s~ n routine is a group, the system pf--rc.. Q- the step shown in FIGI~RE20G. ne~ g at a step 1190, the system begins a loop that analyzes each ~ll-il-ule co~ n~d in the group profile's list of derived ~ bulcs First, the system det~ FS at a step 1192 ~l~elher the group a~ ule~s co..l-,--lc Iist only co"~ R other groups. If so, a ~ g is produced at a step 1194 ;~A:r.~ there are no ~ f~s in the group. As will be apprec~aled~
25 step 1192 is p.-ro----ed rf~u,~;~el~ for any nested groups that a group may cont~in that a group ,~ -lle co.~ Q at least one non-group ~qll~ P" the system sumsthe----n~ cardinalityofall l''r~ tC5 atastep 1196. Atastep 1198, it is d~tl-.--:~-eA whether the sum of the minimum c&J; ~91 l;FS is greater than the group's .--~ -.. count. If so, an error message is produced at a step 1200 inAi~sti~
30 that the ...~ -.. count is too low. If the ~9~ count is set co--~ ly, the system sums the ...~ -.. cardinality of all the --~ r ~9ttrih~lt~s at a step 1202. At a step 1204 it is del~ rA whether the sum of the ...q~ car~iin-s-litif s is less than the group's .-.:~ count. ~ff so, an error ~ -~e is produced at step 1206 inAi~ p that the ...: .~ -.. count is too high.
ff the profile analyzed by the vsli~sti~-n routine is an object link the system pf . r(J. .~Q- the steps shown in FIGI~RES 20H-20I. nf~ at step 1220, the system WO 95/12172 PCTrUS94/1035S
~ $~43 -38-adds the base sPmsntic object of the object link ~ ,ule to the partition map. At a step 1222, it is d~ -ed whether the co-~ Iist of the b se sçmsntiC object is empty. If so, the system produces a ..a~ g at a step 1224 intliC9ti~ the referenced sPmsntiC object is empty.
At a step 1226, the system begins a series of steps that analyze each object L,Ie CG~ .P.d in the profile's list of derived all~ L~es. At a step 1228, the system d~t~ es the cc--~ g semsnti~ object for the object link ~ e being analyzed. At a step 1230, the base sPmsrltic object for the object link ~ le is added to the co~-lA;~ g sPmsntic object's list in the partition map. At a step 1232, the 10 system csl~1stes the -.~ path cardinality from the object link attrihute to the co~ g semantic object. The system del~ es ~l.~,~her the r.. ~;... path cud ~ y to the co-~t~ g sPn~sntic object is equal to one at a step 1234. If so, the system then de~ es ~hclhe. the lD status of all co~ g groups that exist b~ the object linLc ~ ,Llle and the cG-~ sPmsntic object are unique at a step 1236. If so, the system adds the base ~ 1;c object of the object link ~ e to the containing sPms~tiC object's list in the circular ID map at a step 1238.
At a step 1240, the system det. ---- ~-rs .h~,ll,~ the lD status ofthe object linlc a~ le is unique. If the ID status is unique, the system d~t~ .~.;-.PS whether the ... path cardinality from the object linlc attribute to the co..1~ .1;c 20 object is equal to one at a step 1242. If not, the system then detf .~;-.es ~l,~ ~Ler the ;...-J~. cardinality ofthe object link sll~ e is equal to one at a step 1244. If the .~.c~ -.. cardinality is greater than one, a .~.~-g is provided to the user to step 1246 j"~ir~ , that the user has in fact modPlp~d a group and lh~ fule a surrogate group will be created. At a step 1248, it is dele~ ed whether the 25 ~ ~.~ n;c object is the object link's c~ t~ r. If so, an error mPQQa~e is produced at a step 1250 ;~diC~ that the user has ~odPlPd an ~Al~.,vved v.~ ,e. If the semantic object is not the object link's c~ 1Y --- ~ a .~.~.~, ,~,~5c~gr is produced at step 1252 ;~u1i. ~ . that the semantic object ID is nested in a group. At a step 1254, it is det~ *A whether the object link's paired ~ e has a ~ .u-.. cardinality 30 that is greater th-sn one. If so, an error "~ ~c ~ae is produced at step 1256 inA;rsti~ a cardinality rniQmst~h ofthe semantic object lD pairs exists.
At a step 1258, the system dete~ es whether the object link being analyzed is a i.~t~e or parent t~pe. If so, it is A~;l.. -~ at a step 1260 whether the co..~Y;-.- ~ of the v~t~c or parent type is a group. If so, the system pf' fiJ~ ~..R the group count testing set forth in step 1196 in~lGllRE 20G.

- -39- ~ 1 7~2q3 Returning now to FIGllRE 20D, the s~vstem analyzes the three maps produced in ~;IG11RES 20E-20I des~;lil,ed above. At a step 1106, the circular formula map is analyzed. At a step 1108 it is dctf~ .f-d ~l~elher the circular ffirm~lls map inrlirDtçs a formllls attribute inrlvdP~s a ~ ul~ ru....~ c,~ ess;on prope.ly. If so, an error S mes~Q~e is produced at a step 1110 in~ic~s~ting the fc-.----lg ,gttrihute is r.;eu.~ely ~efinçd At a step 1112, the circular ID map is analyzed. At a step 1114 it is det~ ed ~l.c:lhcr the circular ID map intlicsvtes a sçmsntic object that is uniquely identified by itself. If so, an error .-~e~e is produced at step 1116 in~;~pti~ the 10 semantic object inrl~udes a re~;u.~ivli id. .~l;r~c~;Qn At a step 1118, the partition map is analyzed. Step 1120 d~t~.n-l)çs whether all semantic objects in the album are connç~le~ If not, the system produces a .~llil~ mÇsQagp~ at step 1122 ;~l;r~ the album is partifiQn~Pd As can be seen, the v~J;dvstir~n routine Opclales to del~ ç if the user has 15 made any errors in Clw~Ling the semantic object data model. In n~Aifi~n to dtte ~ 8 ~I~ILe. the data types ofthe ~ ."es are cGll~lly created, the system looks for l~UI~ , rçlstiol~-Q-h;l~s within the r.. k ~ l ulcs and in the idçntifiers of the semantic object. Once the album has been vsli~lste~l~ the user then can instruct the system to ll~ ru~ the semantic object into a set of cc--~ ds or i.~rou~ calls 20 which create the database srhPms T~ ,rull~aliol- of Sc .~ ;c Objects into Rçlstion-s-l Tables As des~ ed above, the present invention is a system that allows a user to create a semantic object data model that re~ _.~1s data to be stored in a database.
The system then l~ r -r~J- "~c the model into one or more of a set of c~ n~iC that are 25 ill~ ,leted by a COll~. 4;~.D1 ~5~ e program to create a plurality of le~ l-database tables that COll~ pond to the ~ c object data model.
FIG11RE 21 shows the steps pe- r~...-.ed by the present invention to ~ fo....
a semantic object data model that c~ r~;~,s a plurality of semantic objects into a plurality of COll~lSl~Qr~ g ~ n~l database tables that can be used by a co------~ ~;al 30 d~tahDCe program. ~e~ g with a step 800, each emantic object in the sPmsntic object album is l,locesse~ to create one or more relsti~nsl tables for the s~mg~ti~;
object. For each semantic object in the album, the system begins an outer loop 802 in which a l~ nql table is created for the s~nsntic object at a step 804. The table is given a name that is the same as the name of the semantic object at a step 806. Next, 35 each ~ll.ibu~e within the semontic object is an&ly~d in a loop 808.

The loop 808 col--plises the steps of first det~ e the type _~n;hule for each ~ e within the sPm~qnti-, object, at a step 810. In a step 812, the ~ le isprocescP~ according to its type. The particular steps p~....PA by the present invention to h ~.cr ..., an ~ le are detqiled in the reff..,.ced FIGllRES noted 5 below.
Mer each ~ le within a sPmsntir object has been analyzed, and all the ~...q..~i~ objects within an album have been analyzed, the user is asked to select keys for the ~ lrl;ollql tables created at a step 814. Once the user has selected the keys, any foreign keys that were _mbi~ollc at the time the relstinn~ql tables were created 10 are made definite at a step 816.
The plLi~;ular table dPfinitiQn.e produced by the present invention can be tailored to a par~cular database protocol determined based upon the user's ele~it;n~ of a specific co- ~ ,ial d~ Ace prog.~ with which the present invention will be used.
Given the following dec iplion of how the sPtnsntic object model is l. ..cr~ ...Fd into 15 a number of relqtionsl tables, it is considered to be within the skill of a CG~
prog,~-u..~" to create a driver for any of the co ---F c;ally available relqtic~n~s-l database programs that will produce the appropli&le set of ~ qn~lC that cause that database to create COll.. YpQI~ rel~ionql database tables for the desired s--hems ~IGIlRES 22-29 drs- ~;l-e in detail the steps taken by the present invention to 20 Ll~ r".... an A~ l1e within a semqntic object into one or more relqtionql tables. As de_liled above, the present invention does not create the rPl ~i~nql tables in the rfl~;on~l database but instead causes a co.. f~c;ally a~ b!c d~l~b~ce pro~u~ to create the tables. Each time a table, e-l lmn or key for a table is created by transforming the semantic object model, an app~opliale cO.. ~I~f~ to a specific 25 database ~pplir,~qtion is created and stored in a data file that can be read by the database program, or an appropli~Le subrouLinf of the database p~U~I~Ill i8 called to create the relqtinnql database table. The user inf~rrn~ the system on which type of database program the user is going to implement the database being created. The system inrllldps a series of lookup tables which allow the system to select the correct cc.. -n~l or SUl~lOu~uK that is appropli~te for the d~tr'--e system s~le~;ted ~IGURE 22 shows the steps taken by the present invention to ll~-- r"-~-. a simple value ~ lf into dah input to one or more rel~qtionql tables. Re8n~ , at astep 830, the system dct. ..~: .es if the simple value ~ le has a ...-~;-.--~-..cardinality that is less t.'an or equal to one. If the answer is yes, then the system 35 detPnnines the dah type of the ~ le~ as spf~ified by the value type plu~ , in a step 832. Once the data type has been det~ A, the system creates a column of the WO 95/12172 PCTrUS94/10355 -41- ~175~43 approp,;&le data type in the sPm-sntic object table or the multivalued group table created for the cb.~ of the simple value ~ e (rertllcd as the parent table) at a step 834. A test is made at a step 835 to see if the ID status of the ~ e is none.
If so, no ~ol-lmnc in the table are ms~rlrP~ The system then looks at the ID status 5 plopelly of the simple value ~A~ "~e and dete~minps if it is unique in a step 836. If the ID status is unique, then the new column is marked as a unique key at a step 838.
If the column is not unique, then the column is marked as an index at step 840.
If the .~ ;---- --- cardinality for the simple value Al I ~ ;l,.,le was greater than one, then a new table is created for the .~1~-;1-.,~e at a step 842. The new table is given a 10 name that is a CQI~r~ I;rn of the parent table name and the All-;l,ule name at a step 844. The data type of the ~ ule sperifiPd by the value-type plupelly is then det~ -ed at a step 846. A new column of the apploplidle data type is added to the lle table, and the All~ e is in3-.led at a step 848. A foreign key from the parent table is added in a new column of the newly created simple value ~stt~ihute table 15 in a step 850. At a step 851, a d~tf~ -- ';on iS made whether the ~D status of the A.~1.;1.l~e is none. If so, a surrogate key is ills~.led into the table at a step 856. At a step 852, the system dct~ ---- --es ..h~lL~r the Il) status propclly of the ov~l~;h~e is unique. If the answer is yes, then the column in which the Plt~ihute value was placed is marked as a unique key at a step 854. If the ~ ;bll~r ID is not unique, then a new 20 column is added to the ~ "e table and a i~lù~ale key is ii~ ed at the step 856.
~IGIlRE 23 shows the steps taken by the present invention to process a group .ih~e into one or more relstinnsl tables. The system first det~ .Ps ~ll~th~. the;....- .. cardinality of the group is less than or equal to one in a step 870. If the . wwer is yes, then no separate table need be created to repl~3_,lt the group.
25 However, in order to d~Lde the .-. ..he~ of the group from the re ~.q~ P
entries in the ~ q1 table, the name of the group is pre~Aed to the name of each "e co- ~ -.Pd in the group at a step 872. The system then d~ .PS at a step 876 whether the lD status propc,ly of the group is unique. If the ~ status is non-unique, then the group is marked as a non-unique index at a step 878 for the30 reloti-.nsl table created for the semantic object. However, if the group ID is unique, then the group is marked as a G~n~ ale key at a step 880.
If the . .-~ . cardinality of the group is greater than one, then the table name created for the co-~ - of the group is p,c~d to the group name at a step 882. Next, the system creates a new group table at a step 884 and a foreign key 35 from the parent table is added to the new group table at a step 886. At a step 888, it is d~t~ ed ~ll~ Iher the 11) status plu~c,ly of any of the ~ottrihlltes in the group is WO 9~/12172 PCT~US94/10355 ~ 42-unique. If the answer is yes, then the system ~ete-...;.lfs if the lD status propFlly of the entire group is unique at a step 890. If the ID status of the group is unique, then - each of the unique ~ es co..~ .ed in the group is made a rsn~ s~te key at a step 894. If the ID status of the group is not unique, then each pair of the unique 5 ~ e and the foreign key from the parent table are made çqn~ qte keys at a step 892. If none of the ID status plOpc li_s of the rttrihlltes in the group is unique, then the sy-stem dct~ es if the ID status of the group is unique at step 895. If so, then all ~ "~lcs in the group be~lne can~ qte keys at a step 896. Finally, the system d~t~--.-. nFs if the ~ status plOp~,.ly ofthe group is not unique at a step 898.
10 If so, then all cc' m mc are marked as a non-unique index in a step 900. If the ID
status of the group is not defined as unique or non-unique, then the system qc2,J ~s that the ID status of the group is equal to "none" and a surrogate key is added in an ~ tior-' column ofthe group table at step 902. Finally, at a step 903, each q~ttrihute within the group is pro~essed according to the loop 808 shown inFIGURE 21.
15As shown in FIGI~RE 24, the present ,~ ion 1,~ ru- ---c formlllq ~ ,les to create r~lqtir nsl tables by ~le- . ;-~ g ~hclll~r the result of a formul~q or ~ on is to be stored in the database. ne~ at a step 920, the system gets the f~rrmllptype plOpF.~ of the forml~s ~ ibule. In a step 922, the system ~ele~ -F s ~.h~il.cl~
the fo....-~ type is "stored." If the answer is yes, then the system gets the data type 20 of the result s~ ed by the hll.il.u~e's value-type pr~,p~.ly in a step 924. An ed~i;tionsl column is added to the parent semantic object table of the applo~liale data type in a step 926. If the formlll~ type pi~pc.ly ;--~;c~tc~ that the result of the ~"""~ . ih,~e is not to be stored, then no ~rliti~nsl co1 lmns or tables are created in the database s-hPm-s-2S The h~ -r~ n of object links involves both looking at the ,.. ~-;.. -~--.
car~l;~sl;ti~s of each flll~ibule ~ ced by the object link as well as c~ g a value ca11ed the ...--;-..-~-.- path cardinality. The .---~ .- path c~dinal;l~ refers to the .-.~ -.- c~Jinality of an object in a s~mantic object and any illte.~,.~.l.g C4n~
30FIGI~RES 25A-25C set forth the steps taken by the present invention to h~rQr~.l- a object link vJl~ibule into a series of ~ A1 tables. The system begins at a step 940 by getting a pointer to the P ~ ;c object r~ ced by the object link under consideration. At a step 942, the system ~letr-..-:--es whether a table has been created for the r~f~enced 5~ 1 ;e object. If the answer is no, then a lel~ ;ol~l table 35 is created for the r~ ced semantic object at step 944 ~.ithoul p~uc-eQc ~ itsu~s In a step 946, the -- ~ -.. path car~ slities are cslculsted for the object WO 9~/12172 PCTrUS94/10355 _43_ 21 7524~

link and the paired object link by taking the gr~alesl -. ~.;.. ~cardinality for that object link and all groups that contain the object link. The ... ,~;.. ~.. path cardinality pair falls into one of four states ~prese~Led by: [l:l], [l:Nl, [N:l], or [N:Nl. In a step 948, the system takes various actions de~e~ g upon the ~ - path 5 cardinality pair det~ ed in step 946.
I;IGVRE25B shows the steps taken by the present invention when the ...-~;...-~-..pathcardinalitybet~ apairofobjectlink~ ;b~esis l:l. RP,gl~ eat a step 960, the system d~ -es whether the object link attribute being plocessed is in a group. If the answer is yes, the system d~ .es ~lletll~,. the paired object link lO gnrih~lte is also in a group, at a step 962. If the paired object link is not in a group, then a foreign key from the r~f~r~l~ced sçmsnfic object table is added to the parent object table being dPfinPA at a step 964. If the first object link is not in a group, the system d~t~ s ~hcll.el the paired object link is in a group. If the answer is yes, then noth;~ is done. If the paired object link is not in a group, the system del~ .es 15 whether the integer ID identifiPr for the object link is less than the integer ID id~--fir.~l of the paired object link ~ e If not, the system does not create any n~diti~ns1 foreign keys or tables. However, if the id ~fir.~ of the object link is less than the idPntifiPr of the paired object link based upon a der. ic~ step 968, a foreign key from the r~fel~ced ~ ~ fic object table is added to the parent sP-msnfic object table at a 20 step 964. As will be apprcchled~ the deçir;~n at the step 968 iS ~bi~ r such that the system could easily place a foreign key from the parent sçmsntic object table into the refe,~ued semantic object table if desired.
~ IGI~RE 25C shows the steps taken by the present invention to ll~r~
object link a~ 5 having a [l:Nl, [N:l] and [N:Nl ...~ .. path c rdinality pair.
25 ne~y~ a~ at a step 980 the system d~ f s whether the ...-~ .. path cardinality of the object link J~ JIe under consideration is less than or equal to one. If so, the system adds a foreign key from the r~el~.~ced parent table to the object link's parent table at a step 982. A det~ ation is made at a step 983 ~l~ w~ the .-.-~;-.- ~ ..
cardinality of the object link is less than or equal to one. If not, then the system 30 creates a new rel~qti~)nql table at a step 984. A foreign key is hllpol~c;d into the new ionsl table from both the parent table and the l~rer~ ~ced sPmqntic object table at a step 986. If the answer to step 983 was yes, the system must detçrmine ~ helL~r the object link is cQ..~ ed in a multivalued group at a step 983a. If not, the system then det~ s ~llelller the rPlqfinnchir spPsifiP~d by the object link is many to many at 35 step 996. A step 988 d~;te~ es ~llelh~,r the lD status propelly of the object link is unique. If so, the foreign key added from the lererenced sPmqntiC object table is made ~t1 sz4~
a c~ le key at a step 990. If the ID status of the object link is not unique, the system d~ es wl,cll.er the ID status is equal to "none" at a step 992. If the IDstatus is equal to none, a step 994 adds a surrogate key to a new column of the l table created at step 984. In all cases, the system then checks ~L~ ll,cr the 5 ~ ------- path cardinality for the object link is [N:Nl and (1) WL~ ler the co..~P~
of the object links are both a semantic object or (2) both a group, at a step 996. If either of these is true, an hlte.~tion table is created, and a foreign key from the parent s~ ;c object table and a foreign key from the referenced sem~ntic object table are added to the inle,~c~tion table at a step 998. If at step 996 it is det~ -Fd 10 that the co1~ - of one object link is co~ .ed in a group and the other is cQ~ ed in a semantic object or vice versa, no i~lt~ e~ti~n table is created.
As can be seen by ~IGI~RE 26, no relstion~l tables or ~lumnc are ~ d to process a sul)typc ~ ule. A ~l~lypc ~ e is always paired with a corresl.ond;,~
parent-type ~ le, lLa~fore~ the present invention lets the parent-type ~ ibulcs define a relation ~elween the tables aeated for the parent relation~l table and the subtype relstion~l table.
PIGllRE 27 shows the steps taken by the present invention to l, .~rO~ .-. a parent-type ~ihllte into one or more rel~ti~n~l tables. R~l.l.~ at a step 1010, the system finds the semantic object ,ef~r~ced by the parent-type ~l.il.ule At a step 1012, the system det~ s ~l.~ " a table exists for the l~,f~ ced ~ ~c-~1;r object. If no table exists, then a table is created for the r~ferc~ced semantic object at a step 1014. At a step 1016, a foreign key from the r~ ,nced semantic object table is placed in the parent sçrnsntir object table. Finally, at a step 1018, the foreign key is marked as a c~n~ e key.
FIGI~RE 28 shows the steps taken by the present invention to lr~r.Q~`v. .~. a .lbtwe group ~ il-ule. negJ~ at a step 1028, the system d~t~ :-.c5 if the n;~ .n count of the ~..bt~e group is greater than zero. The system then d~ t~ PS at a step 1030 ~helL.,. the ..~ . count for the group is less than the ,~"lba of ...P ~ber Pl~ "~ Q~ co.~ r,d in the group. If the a~ to steps 1028 30 and 1030 are no, l~o~ 8 is done. However, if the answer is yes in at least one step, a step 1032 d~!t~ ~h~ a the .--~ cardinality of the group is less than or equal to one. If the .~ c~-li..alit~ of the group is greater than one, a new ;onql table is created at a step 1034, and a foreign key from the parent table is added to the new rel-l;r~ l table at a step 1036. Finally, a column is added to the 35 table and a binary data type is defined that is used to ~ ca~e the ~ ;but~s within the group that are sP1~cted _ J'5- 2175~3 ~ IGI~RE 29 shows the steps taken by the present invention in order to define the plul~y keys for a table and update any keys that may have been ambiguous when the relstionql tables were created. The system begins at a step 1050, where for each table created, the plul.al~ keys for the table are defined accordu.g. At a step 1054, 5 the system detr~ e~ whether there are any csn~lid~ste keys i-lPntified If there are csn~ vste keys, the user selects the plU~ y key to be either a sul~ugale key or a data key in a step 1056. In a step 1058, the system d~ es ~I,ell,~ the user has se'^cted a data key. If a data key has been s~lecte~ the user is then prompted to select a key from the list of pos-^ibl,e key rsn~ stes at a step 10S7. If the user selects 10 a surrogate key, a new column is added to the table and the surrogate key is inserted at a step 1060. In a step 1061, all col ~mn~ in the rel~stionsl table that have been s-'~ted as a key are marked as plul.a,~ keys. Any re~i"i~O~ cs~n~Y-ste keys not se'^c.^ted as p,u,~y keys are then defined as unique indices at a step 1062. Once all p~u~y keys have been defined for all tables, any foreign keys that were deppndpnt 15 upon a c~ d?(e key being sele~ led are upd~Jed at a step 1064 to re~ect which of the c~ da~P keys was sele~,ted as a plull&ly key.
As de-~nhed above, the present invention does not create the tables in the database p~og.~". The present invention either places filnction calls with the a~ ul.,i&le &x~ c to l~uliiles provided by the database pl`O~&Il to create the 20 relntionsl tables or creates a text file with the appi~ul,,;ale co..- ~ c that are read by the database pru~" to create the tables.
For example, if the present ll~ iOll is to create tables for the AccP,s~g database pro~ll produced by the Microsoft Col~ûlalion~ the present u.~en~ion calls predPfined ruulilles to create the tables. To create a rPlstion~l table in Access~ the 25 following filn~tion calls are:

Start table ("Table Name") add field ("Colname", data type) create p~ laly key ("Col-.s~ Colname . . .") create index (nColname, Colname . . . ", unique) End table Open table create foreign key ("r.,re~ ce table name, "CQlnsme, Colname . . . ", table n. me) Close table This code creates a table, adds ,l~lllerous col lmnC of a particular data type, 15 sets the plilll&y key and creates an index. ~AAitionslly~ the routine "create foreign key" defines a foreign key for the table, after the rcfcr~l~cd tables are defined As will be appl~ialed~ given the table dcr~ ;onc defined in the figures A~C~ ;bed above, it is well within the skill of an old;l~y plU~l~lllCl to d~ e what co~ Ac must be called or co-~ -Ac created to make a d~b~ce pr~ull create the 20 COll~ s~ol~dlllg relstinnsl tables.
While the prcrcllcd embodiment of the invention has been illustrated and de~c~il.eA it will be app~i&led that various rl~ p.es can be made therein willlou d~allillg from the spirit and scope ofthe il.~,nlion.

Claims (34)

1. A method of operating a computer system to create a relational database schema from a semantic object model, comprising the steps of:
creating, in response to a user input, one or more semantic objects each of which represents an item about which data is stored in one or more tables of a relational database, creating, in response to a user input, one or more attributes and associating the attributes with one or more semantic objects, each of the attributes representing data stored in the relational database for the item represented by the semantic object with which the attribute is associated, the attributes includingsimple value attributes that represent a data entry in a single column of the relational database, group attributes having one or more member attributes that represent a logical collection of attributes and object link attributes that represent relationships between the semantic objects in the semantic object model; and automatically translating the semantic objects and their associated attributes into the one or more relational database tables.
2. The method of Claim 1, further comprising the steps of:
storing in the computer system an indication for each attribute whether the attribute is multivalued, thereby representing multiple data entries in a column of a relational database; and wherein the step of translating the semantic objects and their associated attributes into the one or more relational databasetables further comprises the steps of:
automatically generating a relational database table for each semantic object in the semantic object model;
automatically analyzing each attribute associated with a semantic object to determine whether the semantic object is associated with a multivaluedgroup attribute having a multivalued attribute as a member attribute, and if so:(a) creating a second relational database table for the multivalued group attribute and linking the second relational database table to the relational database table created for the semantic object by a foreign key; and (b) creating a third relational database table for the multivalued attribute that is a member attribute of the multivalued group attribute and linking the third relational database table to the second relational database table by another foreign key.
3. The method of Claim 2, wherein the step of translating the semantic objects and their associated attributes into one or more relational database tables further comprises the steps of:
automatically analyzing each attribute associated with a semantic object to determine whether the semantic object is associated with a multivalued group attribute having an object link attribute as a member attribute, and if so:
a) determining whether the object link attribute is multivalued and if not, adding a column to the second relational database table created for the multivalued group attribute, wherein said column holds a foreign key that links the second relational database table created for a semantic object referenced by theobject link attribute; or b) determining whether the object link attribute is multivalued and if so, creating an intersection table having columns that hold a foreign key to the second relational database table created for the multivalued group attribute and a foreign key to a relational database table created for a semantic object that isreferenced by the multivalued object link attribute.
4. The method of Claim 1, wherein each attribute has one or more properties and each attribute is associated with a corresponding profile that defines default values for the one or more properties, the computer system storing for each profile a list of attributes that are associated with the profile, the method further comprising the steps of:
determining whether a user has modified a property of a profile; and automatically updating the corresponding property in each attribute that is associated with the profile to conform to the modified property.
5. The method of Claim 4, wherein the profiles include simple value profiles, group profiles, and object link profiles, the method further comprising the step of:
automatically generating an object link profile, upon the creation of a semantic object in the semantic object model, and storing in the memory of the computer system, a reference from the object link profile to the semantic object that is associated with the object link profile.
6. The method of Claim 4, wherein the one or more properties defined by the simple value profiles, group profiles and object link profiles include an ID
status property that indicates whether an attribute associated with the profile uniquely identifies the item represented by the semantic object with which a corresponding attribute is associated.
7. The method of Claim 4, wherein the one or more properties defined by the simple value profiles, group profiles and object link profiles include a minimum cardinality property that defines a minimum number of data entries that are stored in the relational database for the corresponding attribute and a maximum cardinality property that defines a maximum number of data entries that are stored in the relational database for a corresponding attribute, wherein the step of translating the semantic objects and their associated attributes in the semantic object model into a relational database schema, further comprises the steps of:
analyzing each attribute associated with a semantic object to determine if it is a simple value attribute and if so:
reading the maximum cardinality property of the simple value attribute;
automatically creating an additional column in the relational database table created for the semantic object with which the simple value attribute is associated, the additional column storing a data entry for the simple value attribute if the maximum cardinality is less than or equal to one; and otherwise automatically creating a separate relational database table for the attribute, the separate relational database table having at least two columns tostore multiple data entries for the simple value attribute and one or more foreign keys that link an entry in the separate relational data base table to an entry in the relational database table created for the semantic object with which the multivalued, simple value attribute is associated.
8. The method of Claim 7, wherein the step of translating the semantic objects and their included attributes in the semantic object model into a relational database schema further comprises the steps of:

analyzing each attribute associated with a semantic object to determine if the attribute is a group attribute and if so:
reading the maximum cardinality property of the group attribute to determine if the group attribute is not multivalued, and if so:
automatically creating an additional column in the relational database table created for the semantic object with which the group attribute isassociated to store data entries for each simple value attribute that is included in the list of member attributes if the maximum cardinality of the group attribute is less than or equal to one.
9. The method of Claim 8, wherein the one or more properties defined by the group profiles further include a minimum count property that indicates how many attributes of the member attributes must have data entries stored in the relational database table created for the group attribute and a maximum count property that indicates a maximum number of attributes of the member attributes that may have data entries stored in the relational database table created for the group attribute, wherein the step of translating the semantic object data model further comprises the steps of:
reading the minimum count and maximum count property of a group attribute;
determining if the minimum count property of the group attribute is greater than zero or if the maximum count property is less than a number of attributes in the list of member attributes and if so:
automatically adding a column to the relational database table created for the group attribute, wherein the column holds a code that indicates the number of attributes in the list of member attributes that must have data entries stored in the relational database.
10. The method of Claim 4, wherein the step of creating one or more attributes further comprises the steps of:
retrieving from a memory of the computer system a plurality of predefined profiles, each profile defining default values of one or more properties of a corresponding attribute;
selecting, in response to user input, one of the plurality of predefined profiles and associating the selected profile with a semantic object in the semantic object model; and automatically creating an attribute in the associated semantic object based on the selected profile, each attribute having one or more properties that are dictated by the one or more properties of the selected profile.
11. The method of Claim 6, further comprising the steps of:
automatically validating the semantic object model to determine if a modeling error has occurred by performing the steps of:
1) determining if a first semantic object in the object model includes an object link attribute having an ID status property that indicates the first semantic object is uniquely defined by a second semantic object in the object model; and 2) determining if the second semantic object includes an object link attribute having an ID status property that indicates the second semantic object is uniquely defined by the first semantic object; and if conditions 1 and 2 do not occur, translating the semantic objects and their associated attributes in the semantic object model into a relational database schema.
12. The method of Claim 11, wherein the step of validating the semantic object model further comprises the step of:
automatically analyzing each semantic object in the semantic object model to determine whether any semantic objects are not associated with any object link attributes .
13. The method of Claim 1, wherein the attributes further include formula attributes that represent a computed value and wherein the computer system stores for each formula attribute, an expression property that defines a mathematical calculation in terms of one or more attributes included in the semantic object data model, the method comprising the steps of:
searching the semantic object data model for the attributes included in the expression property of a formula attribute;
determining if more than one semantic object in the semantic object model includes an attribute that is included in the expression property of the formulaattribute;

for each semantic object that includes an attribute that is found in the expression property of the formula, determining a logical distance the semantic objects are away from the formula attribute; and selecting the attribute that is found in the semantic object that is the closestlogical distance to the formula attribute as the attribute to be used in calculating the expression property.
14. The method of Claim 13, wherein each attribute in the semantic object model is logically included in a container that may include one or more other attributes and wherein the step of determining a logical distance the semantic objects are away from the formula attribute, further comprises the steps of:
performing an expanding ring search for all attributes included in the expression property of the formula by:
creating a first list of attributes that are included in the formula attribute's container, analyzing each attribute in the first list to determine if it matches the attribute in the expression property, wherein each element in the list is determined to be the same logical distance away from the formula attribute.
15. The method of Claim 14, wherein the attributes include parent type and subtype attributes and wherein the step of performing an expanding ring search further comprises the step of determining whether an attribute in the list is a parent type and if so, adding all the attributes included in a semantic objectreferenced by the parent type attribute to the first list of attributes to be searched.
16. The method of Claim 15, wherein the step of performing the expanding ring search further comprises the step of determining whether an attribute in the list is a subtype attribute and, if so, adding any attributes included in a semantic object referenced by the subtype attribute to a next list of attributes to be searched, wherein the next list is determined to be at a further logical distance away than attributes in the first list.
17. The method of Claim 16, wherein the step of performing the expanding ring search further comprises the step of determining whether an attribute in the first list is an object link attribute and, if so, adding any attributes included in a corresponding semantic object referenced by the object link attribute to a next list of attributes to be searched, wherein the next list is determined to be at a farther logical distance away than attributes in the first list.
18. A computer system for creating a database schema, comprising:
means for creating, in response to a user input, one or more semantic objects each of which represents an item about which data is stored in one or more tables of a relational database;
means for creating, in response to a user input, one or more attributes and associating the attributes with one or more semantic objects, each of the attributes representing data stored in the relational database for the item represented by the semantic object with which the attribute is associated, the attributes including simple value attributes that represent a data entry in a single column of the relational database, group attributes having one or more member attributes that represent a logical collection of attributes and object link attributes that represent relationships between the semantic objects in the semantic objectmodel; and means for translating the semantic objects and their associated attributes into the one or more relational database tables.
19. The computer system of Claim 18, further comprising:
means for storing in the computer system an indication for each attribute whether the attribute is multivalued, thereby representing multiple data entries in a column of a relational database; and wherein the means translating the semantic objects and their associated attributes into the one or more relationaldatabase tables, further comprises:
means for automatically generating a relational database table for each semantic object in the semantic object model;

means for automatically analyzing each attribute associated with a semantic object to determine whether the semantic object is associated with a multivalued group attribute having a multivalued attribute as a member attribute, and if so:
a) for creating a second relational database table for the multivalued group attribute and linking the second relational database table to the relational database table created for the semantic object by a foreign key; and b) for creating a third relational database table for the multivalued attribute that is a member attribute of the multivalued group attribute and linking the third relational database table to the second relational database table by another foreign key.
20. The computer system of Claim 19, wherein the means for translating the semantic objects and their associated attributes into one or more relationaldatabase tables further comprises:
means for automatically analyzing each attribute associated with a semantic object to determine whether the semantic object is associated with a multivaluedgroup attribute having an object link attribute as a member attribute, and if so:
a) for determining whether the object link attribute is multivalued and if not, adding a column to the second relational database table created for the multivalued group attribute, wherein said column holds a foreign key that links the second relational database table to a relational database table created for a semantic object referenced by the object link attribute; or b) for determining whether the object link attribute is multivalued and if so, creating an intersection table having columns that hold a foreign key to the second relational database table created for the multivalued group attributeand a foreign key to a relational database table created for a semantic object that is referenced by the multivalued object link attribute.
21. The computer system of Claim 20, wherein each attribute has one or more properties and each attribute is associated with a corresponding profile that defines default values for the one or more properties, the computer system storing for each profile a list of attributes that are associated with the profile, the computer system further comprising:
means for determining whether a user has modified a property of a profile;
and means for automatically updating the corresponding property in each attribute that is associated with the profile to conform to the modified property.
22. The computer system of Claim 21, wherein the profiles include simple value profiles, group profiles, and object link profiles the computer system further comprising:
means for automatically generating an object link profile upon the creation of a semantic object in the semantic object model, and means for storing in the memory of the computer system, a reference from the object link profile to the semantic object that is associated with the object link profile .
23. The computer system of Claim 22, wherein the one or more properties defined by the simple value profiles, group profiles and object link profiles include an ID status property that indicates whether an attribute associated with the profile uniquely identifies the item represented by the semantic object with which a corresponding attribute is associated.
24. The computer system of Claim 22, wherein the one or more properties defined by the simple value profiles, group profiles and object link profiles include a minimum cardinality property that defines a minimum number ofdata entries that are stored in the relational database for the corresponding attribute and a maximum cardinality property that defines a maximum number of data entries that are stored in the relational database for a corresponding attribute, wherein the means for translating the semantic objects and their associated attributes in the semantic object model into a relational database schema, further comprises:
means for analyzing each attribute associated with a semantic object to determine if it is a simple value attribute and if so:
for reading the maximum cardinality property of the simple value attribute;
for automatically creating an additional column in the relational database table additional column storing a data entry for the simple value attribute if the maximum cardinality is less than or equal to one; and otherwise for automatically creating a separate relational database table for the attribute, the separate relational database table having at least two columns tostore multiple data entries for the simple value attribute and one or more foreign keys that link an entry in the separate relational data base table to an entry in the relational database table created for the semantic object with which the multivalued, simple value attribute is associated.
25. The computer system of Claim 24, wherein the means for translating the semantic objects and their included attributes in the semantic object model into a relational database schema, further comprises:
means for analyzing each attribute associated with a semantic object to determine if the attribute is a group attribute and if so:
for reading the maximum cardinality property of the group attribute to determine if the group attribute is not multivalued, and if so:
for automatically creating an additional column in the relational database table created for the semantic object with which the group attribute isassociated to store data entries for each simple value attribute that is included in the list of member attributes if the maximum cardinality of the group attribute is less than or equal to one.
26. The computer system of Claim 22, wherein the one or more properties defined by the group profiles further include a minimum count property that indicates how many attributes of the member attributes must have data entries stored in the relational database table created for the group attribute and a maximum count property that indicates a maximum number of attributes of the member attributes that may have data entries stored in the relational database table created for the group attribute, wherein the means for translating the semantic object data model further comprises:
means for reading the minimum count and maximum count property of a group attribute;

means for determining if the minimum count property of the group attribute is greater than zero or if the maximum count property is less than a number of attributes in the list of member attributes and if so:
for automatically adding a column to the relational database table created for the group attribute, wherein the column holds a code that indicates the number of attributes in the list of member attributes that must have data entries stored in the relational database.
27. The computer system of Claim 21, wherein the means for creating one or more attributes further comprises:
means for retrieving from a memory of the computer system a plurality of predefined profiles, each profile defining default values of one or more properties of a corresponding attribute;
means for selecting, in response to user input, one of the plurality of predefined profiles and associating the selected profile with a semantic object in the semantic object model; and means for automatically creating an attribute in the associated semantic object based on the selected profile, each attribute having one or more properties that are dictated by the one or more properties of the selected profile.
28. The computer system of Claim 23, further comprising:
means for automatically validating the semantic object model to determine if a modeling error has occurred by:
1) determining if a first semantic object in the object model includes an object link attribute having an ID status property that indicates the first semantic object is uniquely defined by a second semantic object in the object model; and 2) determining if the second semantic object includes an object link attribute having and ID status property that indicates the second semantic object is uniquely defined by the first semantic object; and if conditions 1 and 2 do not occur, translating the semantic objects and their associated attributes in the semantic object model into a relational database schema .
29. The computer system of Claim 28, wherein the means for validating the semantic object model further comprises:
means for automatically analyzing each semantic object in the semantic object model to determine whether any semantic objects are not associated with any object link attributes.
30. The computer system of Claim 18, wherein the attributes further include formula attributes that represent a computed value and wherein the computer system stores for each formula attribute, an expression property that defines a mathematical calculation in terms of one or more attributes included in the semantic object data model, the computer system further comprising:
means for searching the semantic object data model for the attributes included in the expression property of a formula attribute;
means for determining if more than one semantic object in the semantic object model contains an attribute that is included in the expression property of the formula attribute;
means for determining a logical distance between the semantic objects that contain the attributes and the formula attribute; and means for selecting the attribute that is found in the semantic object that is the closest logical distance to the formula attribute as the attribute to be used in calculating the expression property.
31. The computer system of Claim 30, wherein each attribute in the semantic object model is logically included in a container that may include one or more other attributes and wherein the step of determining a logical distance thesemantic objects are away from the formula attribute, further comprises:
means for performing an expanding ring search for all attributes included in the expression property of the formula by:
creating a first list of attributes that are included in the formula attribute's container, analyzing each attribute in the list to determine if it matches the attribute in the expression property, wherein each element in the list is determined to be the same logical distance away from the formula attribute.
32. The computer system of Claim 31, wherein the attributes include parent type and subtype attributes and wherein the means for performing an expanding ring search further comprises the means for determining whether an attribute in the list is a parent type and if so, adding all the attributes included in a semantic object referenced by the parent type attribute to the first list of attributes to be searched.
33. The computer system of Claim 32, wherein the means for performing the expanding ring search further comprises the means for determining whether anattribute in the list is a subtype attribute and, if so, for adding any attributes included in a semantic object referenced by the subtype attribute to a next list of attributes to be searched, wherein the next list is determined to be at a further logical distance away than attributes in the first list.
34. The computer system of Claim 33, wherein the means for performing the expanding ring search further comprises the means for determining whether anattribute in the first list is an object link attribute and, if so, adding any attributes included in a corresponding semantic object referenced by the object link attribute to a next list of attributes to be searched, wherein the next list is determined to be at a farther logical distance away than attributes in the first list.
CA002175243A 1993-10-29 1994-09-13 Semantic object modeling system for creating relational database schemas Abandoned CA2175243A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/145,997 US5548749A (en) 1993-10-29 1993-10-29 Semantic orbject modeling system for creating relational database schemas
US08/145,997 1993-10-29

Publications (1)

Publication Number Publication Date
CA2175243A1 true CA2175243A1 (en) 1995-05-04

Family

ID=22515470

Family Applications (1)

Application Number Title Priority Date Filing Date
CA002175243A Abandoned CA2175243A1 (en) 1993-10-29 1994-09-13 Semantic object modeling system for creating relational database schemas

Country Status (14)

Country Link
US (2) US5548749A (en)
EP (1) EP0727070B1 (en)
JP (1) JP2957702B2 (en)
KR (1) KR960706138A (en)
CN (1) CN1137320A (en)
AT (1) ATE180073T1 (en)
AU (1) AU676395B2 (en)
BR (1) BR9407897A (en)
CA (1) CA2175243A1 (en)
DE (1) DE69418474T2 (en)
ES (1) ES2134959T3 (en)
NO (1) NO961698L (en)
NZ (1) NZ275544A (en)
WO (1) WO1995012172A1 (en)

Families Citing this family (244)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5604899A (en) * 1990-05-21 1997-02-18 Financial Systems Technology Pty. Ltd. Data relationships processor with unlimited expansion capability
US5870764A (en) * 1993-05-12 1999-02-09 Apple Computer, Inc. Method of managing a data structure for concurrent serial and parallel revision of a work
GB9320404D0 (en) * 1993-10-04 1993-11-24 Dixon Robert Method & apparatus for data storage & retrieval
US5548749A (en) * 1993-10-29 1996-08-20 Wall Data Incorporated Semantic orbject modeling system for creating relational database schemas
EP0667586A3 (en) * 1994-02-14 1996-08-28 Digital Equipment Corp Database generator.
US5627979A (en) * 1994-07-18 1997-05-06 International Business Machines Corporation System and method for providing a graphical user interface for mapping and accessing objects in data stores
FR2724471B1 (en) * 1994-09-13 1996-10-25 Bull Sa DEVICE FOR GENERATION OF OBJECT-ORIENTED INTERFACES FOR RELATIONAL DATABASES AND METHOD IMPLEMENTED BY SUCH DEVICE
US5809296A (en) * 1994-11-29 1998-09-15 St Computer Systems & Services Ltd. Method and structure for clustering database tables into classes and presenting each class as an E-R model
US5684985A (en) 1994-12-15 1997-11-04 Ufil Unified Data Technologies Ltd. Method and apparatus utilizing bond identifiers executed upon accessing of an endo-dynamic information node (EDIN)
US5799309A (en) * 1994-12-29 1998-08-25 International Business Machines Corporation Generating an optimized set of relational queries fetching data in an object-relational database
JP2947111B2 (en) * 1995-02-17 1999-09-13 日本電気株式会社 Exchange data transfer method and system
JPH11504451A (en) * 1995-04-24 1999-04-20 アスペクト・ディベロップメント・インコーポレイテッド Modeling objects suitable for database structures, translating into relational database structures, and performing fluid searches on them
US5850544A (en) * 1995-06-06 1998-12-15 International Business Machines Corporation System and method for efficient relational query generation and tuple-to-object translation in an object-relational gateway supporting class inheritance
US5819086A (en) * 1995-06-07 1998-10-06 Wall Data Incorporated Computer system for creating semantic object models from existing relational database schemas
US5717924A (en) * 1995-07-07 1998-02-10 Wall Data Incorporated Method and apparatus for modifying existing relational database schemas to reflect changes made in a corresponding object model
US6543046B1 (en) * 1995-07-20 2003-04-01 Accenture Llp Apparatus and method for navigating objects within a computer-implemented object environment
CA2229569A1 (en) * 1995-08-17 1997-02-27 Cathryn A. Stanford Method and apparatus for storing and retrieving data in a relational database using an object model
US5732257A (en) * 1995-09-13 1998-03-24 Hewlett-Packard Co. Object conversion method from a flat object space to a class structured space
US5675788A (en) * 1995-09-15 1997-10-07 Infonautics Corp. Method and apparatus for generating a composite document on a selected topic from a plurality of information sources
US5659742A (en) * 1995-09-15 1997-08-19 Infonautics Corporation Method for storing multi-media information in an information retrieval system
US5742816A (en) * 1995-09-15 1998-04-21 Infonautics Corporation Method and apparatus for identifying textual documents and multi-mediafiles corresponding to a search topic
US5640553A (en) * 1995-09-15 1997-06-17 Infonautics Corporation Relevance normalization for documents retrieved from an information retrieval system in response to a query
US5822731A (en) * 1995-09-15 1998-10-13 Infonautics Corporation Adjusting a hidden Markov model tagger for sentence fragments
US5717914A (en) * 1995-09-15 1998-02-10 Infonautics Corporation Method for categorizing documents into subjects using relevance normalization for documents retrieved from an information retrieval system in response to a query
US5873076A (en) * 1995-09-15 1999-02-16 Infonautics Corporation Architecture for processing search queries, retrieving documents identified thereby, and method for using same
US5721902A (en) * 1995-09-15 1998-02-24 Infonautics Corporation Restricted expansion of query terms using part of speech tagging
DE19538240A1 (en) * 1995-10-13 1998-08-06 Annette Brueckner Information system and method for storing data in an information system
US6112199A (en) * 1995-10-18 2000-08-29 Nelson; Paul M. Data item values
US5864843A (en) * 1995-10-20 1999-01-26 Ncr Corporation Method and apparatus for extending a database management system to operate with diverse object servers
US5689698A (en) * 1995-10-20 1997-11-18 Ncr Corporation Method and apparatus for managing shared data using a data surrogate and obtaining cost parameters from a data dictionary by evaluating a parse tree object
US6085223A (en) * 1995-10-20 2000-07-04 Ncr Corporation Method and apparatus for providing database information to non-requesting clients
US5794250A (en) * 1995-10-20 1998-08-11 Ncr Corporation Method and apparatus for extending existing database management system for new data types
US5930786A (en) 1995-10-20 1999-07-27 Ncr Corporation Method and apparatus for providing shared data to a requesting client
US5754841A (en) * 1995-10-20 1998-05-19 Ncr Corporation Method and apparatus for parallel execution of user-defined functions in an object-relational database management system
US6069627A (en) * 1995-11-01 2000-05-30 International Business Machines Corporation Extender user interface
US5873092A (en) * 1995-12-14 1999-02-16 International Business Machines Corporation Information handling system, method, and article of manufacture including persistent, distributed object name services including shared properties
US5797137A (en) * 1996-03-26 1998-08-18 Golshani; Forouzan Method for converting a database schema in relational form to a schema in object-oriented form
US5970124A (en) 1996-06-05 1999-10-19 Voice Fx Corporation Sponsored information distribution method and apparatus
US5907846A (en) * 1996-06-07 1999-05-25 Electronic Data Systems Corporation Method and system for accessing relational databases using objects
US6226620B1 (en) 1996-06-11 2001-05-01 Yeong Kuang Oon Iterative problem solving technique
US5787442A (en) * 1996-07-11 1998-07-28 Microsoft Corporation Creating interobject reference links in the directory service of a store and forward replication computer network
US5778373A (en) * 1996-07-15 1998-07-07 At&T Corp Integration of an information server database schema by generating a translation map from exemplary files
US5819254A (en) * 1996-07-23 1998-10-06 Wall Data Incorporated Method of transferring data between relational database tables
US5826265A (en) * 1996-12-06 1998-10-20 International Business Machines Corporation Data management system having shared libraries
US6035297A (en) * 1996-12-06 2000-03-07 International Business Machines Machine Data management system for concurrent engineering
US6088693A (en) * 1996-12-06 2000-07-11 International Business Machines Corporation Data management system for file and database management
US5905498A (en) * 1996-12-24 1999-05-18 Correlate Technologies Ltd System and method for managing semantic network display
US6865524B1 (en) * 1997-01-08 2005-03-08 Trilogy Development Group, Inc. Method and apparatus for attribute selection
US5918235A (en) * 1997-04-04 1999-06-29 Hewlett-Packard Company Object surrogate with active computation and probablistic counter
GB2324450A (en) * 1997-04-19 1998-10-21 Ibm Graphical user interface
US6047284A (en) * 1997-05-14 2000-04-04 Portal Software, Inc. Method and apparatus for object oriented storage and retrieval of data from a relational database
US6108664A (en) * 1997-10-31 2000-08-22 Oracle Corporation Object views for relational data
US6385618B1 (en) * 1997-12-22 2002-05-07 Sun Microsystems, Inc. Integrating both modifications to an object model and modifications to a database into source code by an object-relational mapping tool
US6442557B1 (en) * 1998-02-27 2002-08-27 Prc Inc. Evaluation of enterprise architecture model including relational database
US6182064B1 (en) 1998-03-06 2001-01-30 International Business Machines Corporation Method and system for identifying an object located among a number of multiple interconnected computing systems
US6775674B1 (en) * 1998-03-26 2004-08-10 Sap Aktiengesellschaft Auto completion of relationships between objects in a data model
US6327606B1 (en) * 1998-06-24 2001-12-04 Oracle Corp. Memory management of complex objects returned from procedure calls
US6915301B2 (en) * 1998-08-25 2005-07-05 International Business Machines Corporation Dynamic object properties
GB2341250A (en) * 1998-09-04 2000-03-08 Balaena Limited Database structure avoids duplication of stored data
US6115709A (en) * 1998-09-18 2000-09-05 Tacit Knowledge Systems, Inc. Method and system for constructing a knowledge profile of a user having unrestricted and restricted access portions according to respective levels of confidence of content of the portions
US7117433B1 (en) 1998-09-29 2006-10-03 International Business Machines Corporation HTML mapping substitution graphical user interface for display of elements mapped to HTML files
IL142136A0 (en) * 1998-09-30 2002-03-10 I2 Technologies Inc Multi-dimensional data management system
US6327587B1 (en) 1998-10-05 2001-12-04 Digital Archaeology, Inc. Caching optimization with disk and/or memory cache management
US6601058B2 (en) 1998-10-05 2003-07-29 Michael Forster Data exploration system and method
US6735593B1 (en) * 1998-11-12 2004-05-11 Simon Guy Williams Systems and methods for storing data
US7035855B1 (en) * 2000-07-06 2006-04-25 Experian Marketing Solutions, Inc. Process and system for integrating information from disparate databases for purposes of predicting consumer behavior
US7272593B1 (en) * 1999-01-26 2007-09-18 International Business Machines Corporation Method and apparatus for similarity retrieval from iterative refinement
US9268748B2 (en) * 1999-05-21 2016-02-23 E-Numerate Solutions, Inc. System, method, and computer program product for outputting markup language documents
US9262383B2 (en) * 1999-05-21 2016-02-16 E-Numerate Solutions, Inc. System, method, and computer program product for processing a markup document
US6411724B1 (en) * 1999-07-02 2002-06-25 Koninklijke Philips Electronics N.V. Using meta-descriptors to represent multimedia information
JP3211956B2 (en) * 1999-08-31 2001-09-25 勲 清水 Database system
US6965888B1 (en) 1999-09-21 2005-11-15 International Business Machines Corporation Method, system, program, and data structure for cleaning a database table using a look-up table
US6748389B1 (en) 1999-09-21 2004-06-08 International Business Machines Corporation Method, system, and program for inverting columns in a database table
US6920443B1 (en) 1999-09-21 2005-07-19 International Business Machines, Corporation Method, system, program, and data structure for transforming database tables
US7120638B1 (en) * 1999-09-21 2006-10-10 International Business Machines Corporation Method, system, program, and data structure for cleaning a database table
US6604095B1 (en) 1999-09-21 2003-08-05 International Business Machines Corporation Method, system, program, and data structure for pivoting columns in a database table
US6704724B1 (en) 1999-12-14 2004-03-09 Ncr Corporation Parallel optimizer hints with a direct manipulation user interface
KR100609575B1 (en) 1999-12-31 2006-08-04 주식회사 케이티 Method to store geographic data files in object-relational database management systems
US6546365B1 (en) 2000-02-04 2003-04-08 International Business Machines Corporation System for national language support and automated translation table
US6915298B1 (en) * 2000-02-09 2005-07-05 International Business Machines Corporation User-defined relationships for diagramming user-defined database relations
US7072896B2 (en) * 2000-02-16 2006-07-04 Verizon Laboratories Inc. System and method for automatic loading of an XML document defined by a document-type definition into a relational database including the generation of a relational schema therefor
US6931414B1 (en) * 2000-02-18 2005-08-16 Microsoft Corporation Creating visual data models combining multiple inter-related model segments
AU2001239424A1 (en) 2000-03-31 2001-10-15 British Telecommunications Public Limited Company Resource creation method and tool
US20030131338A1 (en) * 2000-03-31 2003-07-10 Nektarios Georgalas Resource modelling
JP2003530643A (en) * 2000-04-10 2003-10-14 イノヴィット プロプライエタリー リミティッド Electronic catalog
US6618733B1 (en) 2000-04-11 2003-09-09 Revelink Inc. View navigation for creation, update and querying of data objects and textual annotations of relations between data objects
US6618732B1 (en) 2000-04-11 2003-09-09 Revelink, Inc. Database query handler supporting querying of textual annotations of relations between data objects
AU2001251527A1 (en) * 2000-04-11 2001-10-23 Revelink, Inc. Framework for creation, update, query, and view navigation of data objects and textual annotations of relations between data objects
US6609132B1 (en) 2000-04-11 2003-08-19 Revelink, Inc. Object data model for a framework for creation, update and view navigation of data objects and textual annotations of relations between data objects
US6591275B1 (en) 2000-06-02 2003-07-08 Sun Microsystems, Inc. Object-relational mapping for tables without primary keys
US6611837B2 (en) 2000-06-05 2003-08-26 International Business Machines Corporation System and method for managing hierarchical objects
US7016917B2 (en) 2000-06-05 2006-03-21 International Business Machines Corporation System and method for storing conceptual information
AUPQ966400A0 (en) * 2000-08-24 2000-09-21 Xemplex Pty Ltd Method of graphically defining a formula
US6640231B1 (en) * 2000-10-06 2003-10-28 Ontology Works, Inc. Ontology for database design and application development
US6990501B2 (en) 2000-11-30 2006-01-24 Monsanto Technology, Llc Method for organizing laboratory information in a database
US20020188424A1 (en) * 2001-04-20 2002-12-12 Grinstein Georges G. Method and system for data analysis
MXPA03011976A (en) * 2001-06-22 2005-07-01 Nervana Inc System and method for knowledge retrieval, management, delivery and presentation.
US6795821B2 (en) 2001-07-17 2004-09-21 Trendium, Inc. Database systems, methods and computer program products including primary key and super key indexes for use with partitioned tables
US8010887B2 (en) * 2001-09-21 2011-08-30 International Business Machines Corporation Implementing versioning support for data using a two-table approach that maximizes database efficiency
US7080004B2 (en) * 2001-12-05 2006-07-18 Microsoft Corporation Grammar authoring system
US7062502B1 (en) * 2001-12-28 2006-06-13 Kesler John N Automated generation of dynamic data entry user interface for relational database management systems
US7096231B2 (en) * 2001-12-28 2006-08-22 American Management Systems, Inc. Export engine which builds relational database directly from object model
US8099393B2 (en) 2002-03-22 2012-01-17 Oracle International Corporation Transaction in memory object store
US20030188278A1 (en) * 2002-03-26 2003-10-02 Carrie Susan Elizabeth Method and apparatus for accelerating digital logic simulations
US20030200220A1 (en) * 2002-04-23 2003-10-23 International Business Machines Corporation Method, system, and program product for the implementation of an attributegroup to aggregate the predefined attributes for an information entity within a content management system
US7383284B2 (en) * 2002-04-30 2008-06-03 Sap Aktiengesellschaft Inventory management
RU2005105582A (en) * 2002-07-26 2005-10-10 Рон ЭВЕРЕТТ (CA) DATABASE AND KNOWLEDGE MANAGEMENT SYSTEM
US7213026B2 (en) * 2002-08-23 2007-05-01 Sun Microsystems, Inc. Apparatus and method for associating classes
US9805373B1 (en) 2002-11-19 2017-10-31 Oracle International Corporation Expertise services platform
US7584208B2 (en) * 2002-11-20 2009-09-01 Radar Networks, Inc. Methods and systems for managing offers and requests in a network
US7640267B2 (en) 2002-11-20 2009-12-29 Radar Networks, Inc. Methods and systems for managing entities in a computing device using semantic objects
US7158962B2 (en) 2002-11-27 2007-01-02 International Business Machines Corporation System and method for automatically linking items with multiple attributes to multiple levels of folders within a content management system
US7426520B2 (en) 2003-09-10 2008-09-16 Exeros, Inc. Method and apparatus for semantic discovery and mapping between data sources
US10325272B2 (en) * 2004-02-20 2019-06-18 Information Resources, Inc. Bias reduction using data fusion of household panel data and transaction data
US7433876B2 (en) 2004-02-23 2008-10-07 Radar Networks, Inc. Semantic web portal and platform
GB0407150D0 (en) * 2004-03-30 2004-05-05 British Telecomm Distributed computer
US8225221B2 (en) * 2004-04-12 2012-07-17 Microsoft Corporation Method and apparatus for constructing representations of objects and entities
US7761858B2 (en) * 2004-04-23 2010-07-20 Microsoft Corporation Semantic programming language
US7689410B2 (en) * 2004-04-23 2010-03-30 Microsoft Corporation Lexical semantic structure
EP1596311A1 (en) * 2004-05-10 2005-11-16 France Telecom System and method for managing data tables
US7450696B2 (en) * 2004-05-11 2008-11-11 At&T Intellectual Property I, L.P. Knowledge management, capture and modeling tool for multi-modal communications
US7672966B2 (en) * 2004-06-30 2010-03-02 Microsoft Corporation Adding extrinsic data columns to an existing database schema using a temporary column pool
US9038001B2 (en) * 2004-07-01 2015-05-19 Mindjet Llc System and method for graphically illustrating external data source information in the form of a visual hierarchy in an electronic workspace
US20090228447A1 (en) * 2004-07-01 2009-09-10 Creekbaum William J System, method, and solfware application for enabling a user to search an external domain within a visual mapping interface
US9047388B2 (en) 2004-07-01 2015-06-02 Mindjet Llc System, method, and software application for displaying data from a web service in a visual map
EP1615127B1 (en) * 2004-07-06 2015-04-22 Comptel Corporation Data processing in a mediation or service provisioning system
US7305413B2 (en) * 2004-12-14 2007-12-04 Microsoft Corporation Semantic authoring, runtime and training environment
US7693918B2 (en) * 2005-03-28 2010-04-06 Microsoft Corporation Rapid prototyping, generating and dynamically modifying a schema representing a database
US8412780B2 (en) 2005-03-30 2013-04-02 Google Inc. Methods and systems for providing current email addresses and contact information for members within a social network
US8223935B2 (en) 2005-04-30 2012-07-17 Oracle International Corporation Revenue management systems and methods
JP4664410B2 (en) 2005-06-28 2011-04-06 オラクル・インターナショナル・コーポレイション Revenue management system and method
EP1938193A4 (en) 2005-07-28 2010-08-04 Oracle Int Corp Revenue management system and method
US20070106797A1 (en) * 2005-09-29 2007-05-10 Nortel Networks Limited Mission goal statement to policy statement translation
US20070078701A1 (en) * 2005-09-30 2007-04-05 Karol Bliznak Systems and methods for managing internal controls with import interface for external test results
US7558808B2 (en) * 2005-10-17 2009-07-07 Accenture Global Services Gmbh Data model for performance management system
US8223777B2 (en) 2005-11-15 2012-07-17 Oracle International Corporation Gateway for achieving low latency and high availability in a real time event processing system
US7779052B2 (en) * 2005-12-12 2010-08-17 Verizon Business Global Llc Network management system
US20070143250A1 (en) * 2005-12-20 2007-06-21 Beckman Coulter, Inc. Adaptable database system
US20070156712A1 (en) * 2005-12-28 2007-07-05 Wasserman Brian J Semantic grammar and engine framework
US20070156472A1 (en) * 2005-12-29 2007-07-05 Karol Bliznak Systems and methods for testing internal control effectiveness
US20070250499A1 (en) * 2006-04-21 2007-10-25 Simon Widdowson Method and system for finding data objects within large data-object libraries
CN101046810B (en) * 2006-05-26 2010-09-08 华为技术有限公司 System for automatic setting relation model and its method
US10268970B2 (en) * 2006-06-07 2019-04-23 International Business Machines Corporation Method, system and program product for generating an implementation of business rules linked to an upper layer business model
US8538786B2 (en) * 2006-06-07 2013-09-17 International Business Machines Corporation Method, system and program product for generating an implementation of a business rule including a volatile portion
US8103703B1 (en) 2006-06-29 2012-01-24 Mindjet Llc System and method for providing content-specific topics in a mind mapping system
US7801856B2 (en) * 2006-08-09 2010-09-21 Oracle International Corporation Using XML for flexible replication of complex types
WO2008021832A2 (en) 2006-08-09 2008-02-21 Radar Networks, Inc. Harvesting data from page
US20080086501A1 (en) * 2006-09-26 2008-04-10 Rhythmbase Communications, Inc. Adaptable computing architecture
US8370479B2 (en) 2006-10-03 2013-02-05 Axeda Acquisition Corporation System and method for dynamically grouping devices based on present device conditions
WO2008041242A2 (en) * 2006-10-05 2008-04-10 Brainwave Applications Limited A novel database
US8515912B2 (en) * 2010-07-15 2013-08-20 Palantir Technologies, Inc. Sharing and deconflicting data changes in a multimaster database system
US8688749B1 (en) 2011-03-31 2014-04-01 Palantir Technologies, Inc. Cross-ontology multi-master replication
US7698259B2 (en) * 2006-11-22 2010-04-13 Sap Ag Semantic search in a database
US20080154939A1 (en) * 2006-12-22 2008-06-26 Unisys Corporation Information transfer from object-oriented repository to relational database
US8065397B2 (en) 2006-12-26 2011-11-22 Axeda Acquisition Corporation Managing configurations of distributed devices
US20080172628A1 (en) * 2007-01-15 2008-07-17 Microsoft Corporation User Experience for Creating Semantic Relationships
US10621203B2 (en) * 2007-01-26 2020-04-14 Information Resources, Inc. Cross-category view of a dataset using an analytic platform
US8504598B2 (en) * 2007-01-26 2013-08-06 Information Resources, Inc. Data perturbation of non-unique values
US20080263000A1 (en) * 2007-01-26 2008-10-23 John Randall West Utilizing aggregated data
US8160984B2 (en) 2007-01-26 2012-04-17 Symphonyiri Group, Inc. Similarity matching of a competitor's products
US20080250054A1 (en) * 2007-02-20 2008-10-09 Donald Bert Nickel Object based heuristics database platform
US9098263B2 (en) * 2007-04-30 2015-08-04 Microsoft Technology Licensing, Llc Database application assembly and preparation
US7761473B2 (en) 2007-05-18 2010-07-20 Microsoft Corporation Typed relationships between items
US8401987B2 (en) * 2007-07-17 2013-03-19 International Business Machines Corporation Managing validation models and rules to apply to data sets
US7873611B2 (en) * 2007-08-31 2011-01-18 Red Hat, Inc. Boolean literal and parameter handling in object relational mapping
US8423955B2 (en) * 2007-08-31 2013-04-16 Red Hat, Inc. Method and apparatus for supporting multiple business process languages in BPM
US7996416B2 (en) * 2007-08-31 2011-08-09 Red Hat, Inc. Parameter type prediction in object relational mapping
US9058571B2 (en) * 2007-08-31 2015-06-16 Red Hat, Inc. Tool for automated transformation of a business process definition into a web application package
US8825713B2 (en) * 2007-09-12 2014-09-02 Red Hat, Inc. BPM system portable across databases
US8914804B2 (en) * 2007-09-12 2014-12-16 Red Hat, Inc. Handling queues associated with web services of business processes
US20090076887A1 (en) * 2007-09-16 2009-03-19 Nova Spivack System And Method Of Collecting Market-Related Data Via A Web-Based Networking Environment
US9152656B2 (en) * 2007-11-20 2015-10-06 Microsoft Technology Licensing, Llc Database data type creation and reuse
US20090248740A1 (en) * 2007-11-20 2009-10-01 Microsoft Corporation Database form and report creation and reuse
US8954952B2 (en) * 2007-11-30 2015-02-10 Red Hat, Inc. Portable business process deployment model across different application servers
US20090157801A1 (en) * 2007-12-12 2009-06-18 Richard Barber System and method for integrating external system data in a visual mapping system
US20090157616A1 (en) * 2007-12-12 2009-06-18 Richard Barber System and method for enabling a user to search and retrieve individual topics in a visual mapping system
US8161396B2 (en) * 2007-12-20 2012-04-17 Mindjet Llc System and method for facilitating collaboration and communication in a visual mapping system by tracking user presence in individual topics
US20090228501A1 (en) * 2008-03-06 2009-09-10 Shockro John J Joint response incident management system
US7953755B2 (en) * 2008-03-24 2011-05-31 Dataura LLC Semantic relational database
US20090282068A1 (en) * 2008-05-12 2009-11-12 Shockro John J Semantic packager
US20090282063A1 (en) * 2008-05-12 2009-11-12 Shockro John J User interface mechanism for saving and sharing information in a context
US9348804B2 (en) * 2008-05-12 2016-05-24 The Nielsen Company (Us), Llc Methods and apparatus to provide a choice selection with data presentation
US9720971B2 (en) * 2008-06-30 2017-08-01 International Business Machines Corporation Discovering transformations applied to a source table to generate a target table
US20100070891A1 (en) * 2008-09-18 2010-03-18 Creekbaum William J System and method for configuring an application via a visual map interface
US9396455B2 (en) * 2008-11-10 2016-07-19 Mindjet Llc System, method, and software application for enabling a user to view and interact with a visual map in an external application
US8195703B1 (en) * 2008-12-02 2012-06-05 Cellco Partnership System and method for storage of disparate items by a database
WO2010070191A1 (en) * 2008-12-16 2010-06-24 Nokia Corporation Method, apparatus and computer program product for providing multi-dimensional manipulations to context models
US10628847B2 (en) 2009-04-15 2020-04-21 Fiver Llc Search-enhanced semantic advertising
US9037567B2 (en) 2009-04-15 2015-05-19 Vcvc Iii Llc Generating user-customized search results and building a semantics-enhanced search engine
US8862579B2 (en) 2009-04-15 2014-10-14 Vcvc Iii Llc Search and search optimization using a pattern of a location identifier
US8200617B2 (en) 2009-04-15 2012-06-12 Evri, Inc. Automatic mapping of a location identifier pattern of an object to a semantic type using object metadata
US8392267B1 (en) 2009-06-30 2013-03-05 Mindjet Llc System, method, and software application for dynamically generating a link to an online procurement site within a software application
EP2480991A2 (en) * 2009-09-25 2012-08-01 Adnan Fakeih Database and method for evaluating data therefrom
US20110246535A1 (en) * 2010-01-15 2011-10-06 Group Business Software Ag Apparatus and Method for Constructing Data Applications in an Unstructured Data Environment
US8571919B2 (en) * 2010-01-20 2013-10-29 American Express Travel Related Services Company, Inc. System and method for identifying attributes of a population using spend level data
US20110178847A1 (en) * 2010-01-20 2011-07-21 American Express Travel Related Services Company, Inc. System and method for identifying a selected demographic's preferences using spend level data
US20110178844A1 (en) * 2010-01-20 2011-07-21 American Express Travel Related Services Company, Inc. System and method for using spend behavior to identify a population of merchants
US8255268B2 (en) * 2010-01-20 2012-08-28 American Express Travel Related Services Company, Inc. System and method for matching merchants based on consumer spend behavior
US20110178846A1 (en) * 2010-01-20 2011-07-21 American Express Travel Related Services Company, Inc. System and method for using spend level data to match a population of consumers to merchants
US20110178848A1 (en) * 2010-01-20 2011-07-21 American Express Travel Related Services Company, Inc. System and method for matching consumers based on spend behavior
US20110178843A1 (en) * 2010-01-20 2011-07-21 American Express Travel Related Services Company, Inc. System and method for using spend behavior to identify a population of consumers that meet a specified criteria
US20110178845A1 (en) * 2010-01-20 2011-07-21 American Express Travel Related Services Company, Inc. System and method for matching merchants to a population of consumers
US20110178841A1 (en) * 2010-01-20 2011-07-21 American Express Travel Related Services Company, Inc. System and method for clustering a population using spend level data
US20110178855A1 (en) * 2010-01-20 2011-07-21 American Express Travel Related Services Company, System and method for increasing marketing performance using spend level data
US20120041989A1 (en) * 2010-08-16 2012-02-16 Tata Consultancy Services Limited Generating assessment data
US8346775B2 (en) 2010-08-31 2013-01-01 International Business Machines Corporation Managing information
US8478786B2 (en) * 2010-09-14 2013-07-02 Microsoft Corporation Automatic layout derivation and implementation
US9323807B2 (en) * 2010-11-03 2016-04-26 Sap Se Graphical manipulation of data objects
US9348941B2 (en) * 2011-06-16 2016-05-24 Microsoft Technology Licensing, Llc Specification of database table relationships for calculation
DE102011087843B4 (en) 2011-12-06 2013-07-11 Continental Automotive Gmbh Method and system for selecting at least one data record from a relational database
US20140317146A1 (en) * 2012-01-18 2014-10-23 XANAMEDIA, Inc. Method and system for the construction and management of complex ecosystem relationship models using a defined bidirectional entity relationship vocabulary for a multidimensional relationship data store
US8782004B2 (en) 2012-01-23 2014-07-15 Palantir Technologies, Inc. Cross-ACL multi-master replication
US8930303B2 (en) 2012-03-30 2015-01-06 International Business Machines Corporation Discovering pivot type relationships between database objects
US9116716B2 (en) 2012-06-24 2015-08-25 Veerai Bharatia Systems and methods for declarative applications
GB2505183A (en) * 2012-08-21 2014-02-26 Ibm Discovering composite keys
US9299050B2 (en) * 2012-09-04 2016-03-29 Optymyze PTE Ltd. System and method of representing business units in sales performance management using entity tables containing explicit entity and internal entity IDs
KR101445580B1 (en) * 2012-09-27 2014-10-14 배재대학교 산학협력단 Method for Sensor-Node Data Representation in Ubiquitous Sensor Network
US9081975B2 (en) 2012-10-22 2015-07-14 Palantir Technologies, Inc. Sharing information between nexuses that use different classification schemes for information access control
US9501761B2 (en) 2012-11-05 2016-11-22 Palantir Technologies, Inc. System and method for sharing investigation results
US20140149093A1 (en) * 2012-11-28 2014-05-29 James Michael Amulu Modeling content data for generating information models
US9116960B2 (en) * 2013-05-17 2015-08-25 Sap Se Calculation engine with optimized multi-part querying
US9116953B2 (en) * 2013-05-17 2015-08-25 Sap Se Calculation engine with dynamic partitioning of intermediate results
US8886601B1 (en) 2013-06-20 2014-11-11 Palantir Technologies, Inc. System and method for incrementally replicating investigative analysis data
US9569070B1 (en) 2013-11-11 2017-02-14 Palantir Technologies, Inc. Assisting in deconflicting concurrency conflicts
CN103810266B (en) * 2014-01-27 2017-04-05 中国电子科技集团公司第十研究所 Semantic network target recognition sentences card method
US20150220945A1 (en) * 2014-01-31 2015-08-06 Mastercard International Incorporated Systems and methods for developing joint predictive scores between non-payment system merchants and payment systems through inferred match modeling system and methods
US9009827B1 (en) 2014-02-20 2015-04-14 Palantir Technologies Inc. Security sharing system
US10572496B1 (en) 2014-07-03 2020-02-25 Palantir Technologies Inc. Distributed workflow system and database with access controls for city resiliency
US9021260B1 (en) 2014-07-03 2015-04-28 Palantir Technologies Inc. Malware data item analysis
US9785773B2 (en) 2014-07-03 2017-10-10 Palantir Technologies Inc. Malware data item analysis
US20160092829A1 (en) * 2014-09-29 2016-03-31 Oracle International Corporation Consigned inventory management system
US20160188710A1 (en) * 2014-12-29 2016-06-30 Wipro Limited METHOD AND SYSTEM FOR MIGRATING DATA TO NOT ONLY STRUCTURED QUERY LANGUAGE (NoSOL) DATABASE
US10621198B1 (en) 2015-12-30 2020-04-14 Palantir Technologies Inc. System and method for secure database replication
US10262053B2 (en) 2016-12-22 2019-04-16 Palantir Technologies Inc. Systems and methods for data replication synchronization
US11080273B2 (en) 2017-03-20 2021-08-03 International Business Machines Corporation Image support for cognitive intelligence queries
US11182414B2 (en) 2017-03-20 2021-11-23 International Business Machines Corporation Search queries of multi-datatype databases
US10984030B2 (en) 2017-03-20 2021-04-20 International Business Machines Corporation Creating cognitive intelligence queries from multiple data corpuses
US11100100B2 (en) 2017-03-20 2021-08-24 International Business Machines Corporation Numeric data type support for cognitive intelligence queries
US10068002B1 (en) 2017-04-25 2018-09-04 Palantir Technologies Inc. Systems and methods for adaptive data replication
US10430062B2 (en) 2017-05-30 2019-10-01 Palantir Technologies Inc. Systems and methods for geo-fenced dynamic dissemination
US11030494B1 (en) 2017-06-15 2021-06-08 Palantir Technologies Inc. Systems and methods for managing data spills
US10380196B2 (en) 2017-12-08 2019-08-13 Palantir Technologies Inc. Systems and methods for using linked documents
US10915542B1 (en) 2017-12-19 2021-02-09 Palantir Technologies Inc. Contextual modification of data sharing constraints in a distributed database system that uses a multi-master replication scheme
US11341418B2 (en) * 2018-11-13 2022-05-24 Salveretec PRC Ascriptive and descriptive entities for process and translation: a limited iterative ontological notation

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4930071A (en) * 1987-06-19 1990-05-29 Intellicorp, Inc. Method for integrating a knowledge-based system with an arbitrary database system
US5278946A (en) * 1989-12-04 1994-01-11 Hitachi, Ltd. Method of presenting multimedia data in a desired form by comparing and replacing a user template model with analogous portions of a system
US5195178A (en) * 1990-04-27 1993-03-16 Bachman Information Systems, Inc. Adaptive window system for dynamically modeling information systems
GB2253500A (en) * 1990-08-23 1992-09-09 Data General Corp Object oriented-data bases
US5307499A (en) * 1990-11-30 1994-04-26 Singapore Computer Systems Limited Interpretive object-oriented facility which can access pre-compiled classes
US5295256A (en) * 1990-12-14 1994-03-15 Racal-Datacom, Inc. Automatic storage of persistent objects in a relational schema
US5212787A (en) * 1991-03-12 1993-05-18 International Business Machines Corporation Method and apparatus for accessing a relational database without exiting an object-oriented environment
US5263167A (en) * 1991-11-22 1993-11-16 International Business Machines Corporation User interface for a relational database using a task object for defining search queries in response to a profile object which describes user proficiency
JP2711204B2 (en) * 1992-03-09 1998-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション How to generate a relational database user interface
JPH0689307A (en) * 1992-05-04 1994-03-29 Internatl Business Mach Corp <Ibm> Device and method for displaying information in database
WO1995003586A1 (en) * 1993-07-21 1995-02-02 Persistence Software, Inc. Method and apparatus for generation of code for mapping relational data to objects
US5548749A (en) * 1993-10-29 1996-08-20 Wall Data Incorporated Semantic orbject modeling system for creating relational database schemas

Also Published As

Publication number Publication date
NZ275544A (en) 1997-05-26
EP0727070A1 (en) 1996-08-21
JPH09507106A (en) 1997-07-15
CN1137320A (en) 1996-12-04
DE69418474T2 (en) 1999-12-09
BR9407897A (en) 1996-11-19
AU676395B2 (en) 1997-03-06
US5548749A (en) 1996-08-20
DE69418474D1 (en) 1999-06-17
EP0727070B1 (en) 1999-05-12
AU7955294A (en) 1995-05-22
KR960706138A (en) 1996-11-08
JP2957702B2 (en) 1999-10-06
ES2134959T3 (en) 1999-10-16
NO961698D0 (en) 1996-04-26
ATE180073T1 (en) 1999-05-15
WO1995012172A1 (en) 1995-05-04
US5809297A (en) 1998-09-15
NO961698L (en) 1996-06-26

Similar Documents

Publication Publication Date Title
CA2175243A1 (en) Semantic object modeling system for creating relational database schemas
US10885112B2 (en) System and method for non-programmers to dynamically manage multiple sets of XML document data
US7822795B2 (en) Apparatus and methods for displaying and determining dependency relationships among subsystems in a computer software system
EP1247165B1 (en) System and method for transforming a relational database to a hierarchical database
US7925658B2 (en) Methods and apparatus for mapping a hierarchical data structure to a flat data structure for use in generating a report
US7356779B2 (en) Analytical reporting on top of multidimensional data model
US8352478B2 (en) Master data framework
EP1918827A1 (en) Data processing
US9218409B2 (en) Method for generating and using a reusable custom-defined nestable compound data type as database qualifiers
US20040236655A1 (en) Method and system for object-oriented management of multi-dimensional data
US7593957B2 (en) Hybrid data provider
US20080016041A1 (en) Spreadsheet-based relational database interface
JP2003233527A (en) Attribute-dominated dynamic tree structure
WO2010040174A1 (en) Synchronization of relational databases with olap cubes
US7099727B2 (en) Knowledge repository system for computing devices
US7860903B2 (en) Techniques for generic data extraction
US20150058363A1 (en) Cloud-based enterprise content management system
US20140143270A1 (en) Generating dynamic drilldown reports
US10769294B2 (en) Asynchronous update of explosion definitions based on change triggers for evaluation of authorization rights
Chandwani et al. Implementation of star schemas from ER Model
EP1965313A1 (en) Data processing
Vardaki Metadata for symbolic objects
Boyno A Syllabus in Data Warehousing

Legal Events

Date Code Title Description
EEER Examination request
FZDE Discontinued