3

I recently found the patent System and method for loading objects for object-relational mapping US 8,903,797.

I develop Ruby on Rails web applications that follow the Active record pattern for Object relation mapping.

As far as I understand the patent, it covers this mapping. Is this true?

  • US 8,903,797 - Appears to be a variant on Oracle's Objects / Object table offering that appeared in the mid 1990's, think in V8. It's also appears to be rather abstract. – arober11 Aug 27 '15 at 16:03
1

There are 3 independent claims in that patent, so you need to examine each of those claims on a clause-by-clause basis.

Claim 1 is the "Method" claim embodying the process that can be implemented in software.

Claim 8 is the "System" claim that implements the method on physical hardware.

Claim 15 uses the clause "non-transitory", which is becoming common-place to make it clear that the data is actually stored somewhere in a physical medium and not simply being transmitted over the wire. This clause could in fact be used to argue that since the Active Object and Object Relation patterns are applicable to transitory data as well as non-transitory data, that Claim 15 would be obvious over Claim 8 to one skilled in the art.

The remainder of the clauses for Claims 8 and 15 are identical to those of Claim 1 except for a few inconsequential grammar variations. Therefore, due to the similarity between all of these independent claims, you only need to invalidate Claim 1 in order to invalidate the entire application.

Claim 1. A method for creating data objects, the method comprising:

  • performing a first query of a database to locate a first table associated with a first data type to be created;
  • loading a plurality of rows from only the first table during the query associated with the first table;
  • creating a first set of data objects associated with the first data type, wherein each data object of the first set is created from only data stored in each of the rows loaded from the first table;
  • performing a second query of the database to locate a second table associated with a second data type to be created, wherein the second data type depends from the first data type;
  • loading a plurality of rows from only the second table during the query associated with the second table;
  • creating a second set of data objects associated with the second data type, wherein each data object of the second set is created from only data stored in each of the rows loaded from the second table, wherein the data objects of the second set depend from the data objects of the first set;
  • and associating each data object of the second set to an associated parent object of the first set, wherein the database is queried only once for the first table and the database is queried only once for the second table.

Here is your checklist for Prior Art on Claim 1:

method for creating data objects: yes

perform a first query of database: yes
    locate first table associated with first data type: ???
    load rows from only first table: ???
    create first set of data objects of first data type: ???
        each data object is created only from those rows retrieved: ???

perform second query of database: ???
    locate second table associated with second data type: ???
        second data type depends on first data type: ???
    load rows from only second table: ???
    create second set of data objects of second data type: ???
        each data object is created only from those rows retrieved: ???
        data objects from second set depend on data objects from first set: ???

associate each data object from second set with a parent data object from the first set: 
database is queried only once for first table: ???
database is queried only once for second table: ???

I am not deeply familiar with the Ruby implementation, so I'll leave it to others to fill in the blanks in the above list. For instance, are there two different data types, or only a single composite data type in the Ruby ActiveRecord inheritance?

Claim 8. A system for creating data objects, the system comprising: a machine comprising a processor, wherein the machine is operable to:

  • ...repeated

Claim 15. Logic for creating data objects, the logic being embodied in a non-transitory computer-readable medium and when executed operable to:

  • ...repeated

Finally, some things to note. The claims in this application are limited only to retrieval and nothing is claimed for INSERT or UPDATE. The retrieval itself is limited to Single-Table Inheritance.

This Stack Overflow answer proves that Ruby ActiveRecord implemented Single-Table Inheritance by 2009.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.