← Back to Patent Explorer
US5412797A Expired / Lapsed US ⏱️ 0.0 years remaining

Method for implementing one-to-many binary relations in object-oriented systems using doubly-linked rings

Assignee: International Business Machines Corp
•
Filing: 1992-08-31
•
Granted: 1995-05-02
•
Expires: 2012-08-31
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract An implementation of one-to-many binary relations in an object-oriented database management system and object-oriented data model. The implementation includes storing all the information for the relationships of a relation contiguously inside the related instances, such as a source instance and a sink instance. The information stored within the related instances is used to create a doubly-linked ring of instances. The doubly-linked ring of instances is used in implementing a relation. In order to iterate through a relation, a cursor is employed. Encapsulated within the cursor are various pointers and data members which are used in cursing through the relation. The cursor is type safe and each cursor instance is maintained in a cursor dictionary, providing iteration safety. In addition, the cursor is operational in a forward direction and a backward direction, and the direction of the cursor can be dynamically switched.

Inventors

  • 👤 William B. Rubin

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-30 21:17
CPC Classifications
G; G06; G06F; G06F16/00; G06F16/20; G06F16/28; G06F16/289; Y; Y10; Y10S; Y10S707/00; Y10S707/99941; Y10S707/99944

Claims Analysis

Total Claims: 34
Claim 1
Independent Claim 258 words
A method for implementing a one-to-many binary relation in an automated object-oriented data repository, said method comprising the steps of: creating within said automated object-oriented data repository a source instance from a source class and a plurality of sink instances from a sink class; storing within said source instance a first sink pointer for pointing to a first sink instance of said plurality of sink instances and a last sink pointer for pointing to a last sink instance of said plurality of sink instances; storing within each of said sink instances a next sink pointer for pointing to a next sink instance of said plurality of sink instances when a next sink instance exists or a pseudo-sink address associated with said source instance when there is no next sink instance, and a previous sink pointer for pointing to a previous sink instance of said plurality of sink instances when there is a previous sink instance or said pseudo-sink address when there is no previous sink instance; and inserting a binary relationship between said source instance and each of said plurality of sink instances by setting said first sink pointer to said first sink instance, said last sink pointer to said last sink instance, said next sink pointer to said next sink instance if there is a next sink instance or said pseudo-sink address if there is no next sink instance, and said previous sink pointer to said previous sink instance if there is a previous sink instance or said pseudo-sink address if there is no previous sink instance.
Claim 2
Independent Claim 258 words
A method for implementing a one-to-many binary relation in an automated object-oriented data repository, said method comprising the steps of: creating within said automated object-oriented data repository a source instance from a source class and a plurality of sink instances from a sink class; storing within said source instance a first sink pointer for pointing to a first sink instance of said plurality of sink instances and a last sink pointer for pointing to a last sink instance of said plurality of sink instances; storing within each of said sink instances a next sink pointer for pointing to a next sink instance of said plurality of sink instances when a next sink instance exists or a pseudo-sink address associated with said source instance when there is no next sink instance, and a previous sink pointer for pointing to a previous sink instance of said plurality of sink instances when there is a previous sink instance or said pseudo-sink address when there is no previous sink instance; and inserting a binary relationship between said source instance and each of said plurality of sink instances by setting said first sink pointer to said first sink instance, said last sink pointer to said last sink instance, said next sink pointer to said next sink instance if there is a next sink instance or said pseudo-sink address if there is no next sink instance, and said previous sink pointer to said previous sink instance if there is a previous sink instance or said pseudo-sink address if there is no previous sink instance.
Claim 3
Dependent Claim 27 words
The method of claim 1, further comprising storing a source pointer within each of said plurality of sink instances, each source pointer pointing to said source instance.
Claim 4
Dependent Claim 32 words
The method of claim 1, wherein said creating step comprises the step of setting said first sink pointer and said last sink pointer stored within said source instance to said pseudo-sink address.
Claim 5
Dependent Claim 28 words
The method of claim 2, wherein said creating step further comprises the step of setting said source pointer in each of said plurality of sink instances to null.
Claim 6
Dependent Claim 107 words
The method of claim 2, further comprising adding an additional sink instance to said plurality of sink instances, said additional sink instance comprising a next sink pointer for pointing to a next sink instance of said plurality of sink instances when a next sink instance exists or said pseudo-sink address when there is no next sink instance, a previous sink pointer for pointing to a previous sink instance of said plurality of sink instances when there is a previous sink instance or said pseudo-sink address when there is no previous sink instance and a source pointer for pointing from said additional sink instance to said source instance.
Claim 7
Dependent Claim 134 words
The method of claim 5, wherein said sink instance adding step comprises the steps of: setting said source pointer of said additional sink instance to an address of said source instance; setting said next sink pointer of said additional sink instance to said pseudo-sink address; setting said previous sink pointer of said additional sink instance to a value of said last sink pointer; setting said first sink pointer to an address of said additional sink instance if no sink instances other than said additional sink instance exists; setting said next sink pointer of a sink instance other than said additional sink instance to said address of said additional sink instance if said sink instance other than said additional sink instance exists; and setting said last sink pointer to said address of said additional sink.
Claim 8
Dependent Claim 19 words
The method of claim 2, wherein said inserting step comprises the step of determining whether said relationship previously exists.
Claim 9
Dependent Claim 44 words
The method of claim 7, wherein said determining step comprises the step of examining said source pointer of each of said plurality of sink instances to determine whether said source pointer is null, and wherein said null source pointer indicates no previous relationship exists.
Claim 10
Dependent Claim 25 words
The method of claim 2, further comprising the step of removing a relationship between said source instance and one of said plurality of sink instances.
Claim 11
Dependent Claim 49 words
The method of claim 9, wherein said removing step comprises the steps of: selecting a sink instance to be removed from said plurality of sink instances; setting said source pointer of said selected sink instance to null; and removing said selected sink instance from said plurality of sink instances.
Claim 12
Dependent Claim 22 words
The method of claim 1, further comprising the step of implementing an iterator for use in iterating through said one-to-many binary relation.
Claim 13
Dependent Claim 66 words
The method of claim 11, wherein the iterator implementing step comprises the steps of: creating an iterator instance from an iterator class, said iterator instance comprising one or more data members for use in traversing a one-to-many binary relation, said one or more data members being stored within said iterator instance; and attaching said iterator instance to said source instance, wherein an attached iterator is provided.
Claim 14
Dependent Claim 35 words
The method of claim 12, wherein said one or more data members comprise a pseudo-sink pointer containing an address associated with said source instance, and a position pointer indicating a current position of said iterator.
Claim 15
Dependent Claim 14 words
The method of claim 13, further comprising the step of advancing said attached iterator.
Claim 16
Dependent Claim 97 words
The method of claim 14, wherein the advancing step comprises the steps of: offsetting said position pointer by a predetermined value such that a temporary pointer is provided; dereferencing said temporary pointer in order to obtain a value stored at an address pointed to by said temporary pointer and assigning said value to said temporary pointer; determining whether said temporary pointer is equal to said pseudo-sink pointer; and advancing said attached iterator instance by setting said position pointer to said temporary pointer when said determining step indicates said temporary pointer is not equal to said pseudo-sink pointer.
Claim 17
Dependent Claim 26 words
The method of claim 13, further comprising the step of returning an address of one of said plurality of sink instances related to said source instance.
Claim 18
Dependent Claim 44 words
The method of claim 16, wherein said returning step comprises the steps of: determining whether said position pointer is equal to said pseudo-sink pointer; and returning said position pointer when said determining step indicates said position pointer is not equal to said pseudo-sink pointer.
Claim 19
Dependent Claim 18 words
The method of claim 12, further comprising the step of inserting said iterator instance in an iterator dictionary.
Claim 20
Dependent Claim 20 words
The method of claim 11, wherein said iterator is capable of operating in a forward direction and a backward direction.
Claim 21
Dependent Claim 18 words
The method of claim 19, wherein said operating direction of said iterator is capable of being dynamically switched.
Claim 22
Dependent Claim 46 words
The method of claim 2, further comprising the step of removing each of said binary relationships, said removing step comprising the steps of: setting each of said source pointers to null; and setting said first sink pointer and said last sink pointer to said pseudo-sink address.
Claim 23
Dependent Claim 21 words
The method of claim 15, wherein said predetermined value is obtained from an offset data member stored within said iterator instance.
Claim 24
Dependent Claim 37 words
The method of claim 12, wherein said attaching step comprises the steps of: setting at least one of said one or more data members to a predetermined value; and inserting said iterator instance in an iterator dictionary.
Claim 25
Dependent Claim 18 words
The method of claim 23, further comprising the step of detaching said iterator instance that has been attached.
Claim 26
Dependent Claim 33 words
The method of claim 24, wherein said detaching step comprises the steps of: removing said iterator instance from said iterator dictionary; and setting one of said one or more data members to null.
Claim 27
Dependent Claim 18 words
The method of claim 23, further comprising the step of removing said iterator instance from said iterator dictionary.
Claim 28
Dependent Claim 81 words
The method of claim 26, wherein said removing step comprises the steps of: removing said iterator instance from a list of iterator instances associated with said source instance if said iterator instance is not a first iterator instance attached to said source instance; removing said iterator instance from a ring of iterator instances if said iterator instance is a first iterator instance associated with said source instance; and making an existing second iterator instance a first iterator instance in said ring.
Claim 29
Dependent Claim 24 words
The method of claim 12, wherein a plurality of iterator instances are attached to said source instance and are inserted into an iterator dictionary.
Claim 30
Dependent Claim 61 words
The method of claim 28, further comprising the step of removing said plurality of iterator instances when said source instance is deleted, and wherein said removing step comprises the step of removing a first iterator instance of said plurality of iterator instances from said iterator dictionary, wherein said removal removes each of said plurality of iterator instances from said iterator dictionary.
Claim 31
Dependent Claim 21 words
The method of claim 11, further comprising the step of providing iteration safety when one of said binary relationships is removed.
Claim 32
Dependent Claim 37 words
The method of claim 30, wherein said providing step comprises the step of setting back a data member stored within said iterator instance using a predetermined value, said iterator instance corresponding to said relationship to be removed.
Claim 33
Dependent Claim 75 words
The method of claim 31, wherein said data member comprises a position pointer indicating a position of said iterator instance, and wherein said setting back step further comprises the steps of: offsetting said position pointer by said predetermined value such that a temporary pointer is provided; and dereferencing said temporary pointer in order to obtain a value stored at an address pointed to by said temporary pointer; and assigning said value to said position pointer.
Claim 34
Dependent Claim 32 words
The method of claim 20, wherein switching of said operating direction comprises the step of interchanging predetermined values of a first data member and a second data member associated with said iterator.

References Cited (Backward Citations)

US5095522A Cited
US4853843A Cited
US5093914A Cited
US5075848A Cited
US5297279A Cited
US5291593A Cited
US5291583A Cited
US5187786A Cited
US5303375A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1998-05-01 1998-10-31 1999-05-02 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2002-05-01 2002-10-31 2003-05-02 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2006-05-01 2006-10-31 2007-05-02 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag