DETAILED ACTION
In response to communication filed on 12 December 2025, claims 1-8, 21-22 and 24-32 are amended. Claims 9-20 are canceled. Claims 1-8 and 21-32 are pending.
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Response to Arguments
Applicant’s arguments, see “Object to Claim 5” filed 12 December 2025, have been carefully considered. Based on the claim amendments, the claim objections have been withdrawn.
Applicant’s arguments, see “Rejection of Claims 1, 4, 8, 21, 24, 28-29 & 31” filed 12 December 2025, have been carefully considered. The arguments are related to newly added claim limitations and are addressed in the rejection below.
Election/Restrictions
Claims 29-32 appear to be amended claims, however the claim language has been completely amended and are directed to an invention that is independent or distinct from the invention originally claimed for the following reasons: Claims 29-32, drawn to be more directed towards processing query parameters and assigning keys, whereas this functionality is not being performed in the claims 1-8 and 21-28 and as a result claims 29-32 are classified in G06F16/335, G06F16/3332 and G06F16/3334. Claims 1-8 and 21-28 are drawn to be more directed towards details of query data sets and as a result classified in G06F16/24.
Since applicant has received an action on the merits for the originally presented invention, this invention has been constructively elected by original presentation for prosecution on the merits. Accordingly, claims 29-32 are withdrawn from consideration as being directed to a non-elected invention. See 37 CFR 1.142(b) and MPEP § 821.03.
To preserve a right to petition, the reply to this action must distinctly and specifically point out supposed errors in the restriction requirement. Otherwise, the election shall be treated as a final election without traverse. Traversal must be timely. Failure to timely traverse the requirement will result in the loss of right to petition under 37 CFR 1.144. If claims are subsequently added, applicant must indicate which of the subsequently added claims are readable upon the elected invention.
Should applicant traverse on the ground that the inventions are not patentably distinct, applicant should submit evidence or identify such evidence now of record showing the inventions to be obvious variants or clearly admit on the record that this is the case. In either instance, if the examiner finds one of the inventions unpatentable over the prior art, the evidence or admission may be used in a rejection under 35 U.S.C. 103 or pre-AIA 35 U.S.C. 103(a) of the other invention.
Claim Interpretation
Claim 2 recites “using a bitwise OR operation”. These claim limitations appear to be citing intended use in terms of what the bitwise OR operation is used for. Examiner suggests amending the claim to recite the functionality performed by the claimed method, instead of reciting what the claim elements are used for.
Claim 22 recites “using the single AMQ data set”. These claim limitations appear to be citing intended use in terms of what the single AMQ data set is used for. Examiner suggests amending the claim to recite the functionality performed by the claimed method, instead of reciting what the claim elements are used for.
Claim 25 recites “using the logical bitwise OR operation”. These claim limitations appear to be citing intended use in terms of what the logical bitwise OR operation is used for. Examiner suggests amending the claim to recite the functionality performed by the claimed method, instead of reciting what the claim elements are used for.
Claim Rejections - 35 USC § 103
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claims 1, 4, 5 and 8 are rejected under 35 U.S.C. 103 as being unpatentable over Heen et al. (US 2018/0121482 A1, hereinafter “Heen”) in view of Hagerup (US 11,030,174 B1, hereinafter “Hagerup”).
Regarding claim 1, Heen teaches
A method executed by a computer system, comprising: (see Heen, [0013] “Computationally less intensive methods for monitoring changes to a relationship graph, and systems that employ said methods, are provided herein. Approximate Membership Query (AMQ) Filters are used in conjunction with graph queries to a relational graph to provide change monitoring that span views associated with the queries”).
receiving, by the computer system, AMQ information (see Heen, [0042] “An identifier received from the change stream is hashed, as though it were being added to the member set of the AMQ filter 140, to produce several positions in the array at which the corresponding node or index structures would be recorded”; [0015] “Each of the client device 110 and graph server 120 are illustrative of a multitude of computing systems”) different approximate membership query (AMQ) data sets; (see Heen, [0037] “The index structure of the view or subgraph spanned by the query in some aspects is recorded in association with the AMQ filter 140. The relational graph is spanned in a tree structure; a root node from which other leaf nodes depend is spanned outwardly from by the graph server 120 along the edges, which act as branches from one node to the next. The identifiers of each of the nodes in the view are collected according to the tree structure, and the structure collapsed… Recording the index structure allows for changes to the view to be tracked, such as, for example, the addition of a new node to the view, which was not part of the original member set of the AMQ filter 140, but potentially affects the view returned by the query”; [0042] “The change stream contains identifiers of the nodes or index structures affected by a change, and the AMQ filter 140 is queried to determine whether that identifier appears to be a member of the set recorded in the AMQ filter 140” – there are different data sets in form of graphs/subgraphs).
generating, by the computer system, a single AMQ data set (see Heen, [0022] “the index structure of the nodes in the view is treated as a member of the AMQ filter's 140 member set or is stored separately… An index structure is constructed by concatenating the identifiers of the nodes in a flattened tree structure. In response to a node being updated, added, or removed in the graph database 130, the graph server 120 is operable to query one or more AMQ filters 140 to determine whether the affected node is part of those AMQ filters' 140 member sets… the identifiers of the nodes affected by a change are fed to the graph server 120 as a change stream, to compare against one or more AMQ filters 140”; [0015] “Each of the client device 110 and graph server 120 are illustrative of a multitude of computing systems”) that represents the different AMQ data sets… (see Heen, [0037] “The index structure of the view or subgraph spanned by the query in some aspects is recorded in association with the AMQ filter 140. The relational graph is spanned in a tree structure; a root node from which other leaf nodes depend is spanned outwardly from by the graph server 120 along the edges, which act as branches from one node to the next. The identifiers of each of the nodes in the view are collected according to the tree structure, and the structure collapsed… Recording the index structure allows for changes to the view to be tracked, such as, for example, the addition of a new node to the view, which was not part of the original member set of the AMQ filter 140, but potentially affects the view returned by the query”; [0042] “The change stream contains identifiers of the nodes or index structures affected by a change, and the AMQ filter 140 is queried to determine whether that identifier appears to be a member of the set recorded in the AMQ filter 140” – there are different data sets in form graphs/subgraphs) the different AMQ data sets; and (see Heen, [0037] “The index structure of the view or subgraph spanned by the query in some aspects is recorded in association with the AMQ filter 140. The relational graph is spanned in a tree structure; a root node from which other leaf nodes depend is spanned outwardly from by the graph server 120 along the edges, which act as branches from one node to the next. The identifiers of each of the nodes in the view are collected according to the tree structure, and the structure collapsed… Recording the index structure allows for changes to the view to be tracked, such as, for example, the addition of a new node to the view, which was not part of the original member set of the AMQ filter 140, but potentially affects the view returned by the query”; [0042] “The change stream contains identifiers of the nodes or index structures affected by a change, and the AMQ filter 140 is queried to determine whether that identifier appears to be a member of the set recorded in the AMQ filter 140” – there are different data sets in form graphs/subgraphs).
storing, by the computer system, information (see Heen, [0057] “The system memory 304, the removable storage device 309, and the non-removable storage device 310 are all computer storage media examples (i.e., memory storage.)… can be used to store information and which can be accessed by the computing device 300”) the single AMQ data set (see Heen, [0022] “the index structure of the nodes in the view is treated as a member of the AMQ filter's 140 member set or is stored separately… An index structure is constructed by concatenating the identifiers of the nodes in a flattened tree structure. In response to a node being updated, added, or removed in the graph database 130, the graph server 120 is operable to query one or more AMQ filters 140 to determine whether the affected node is part of those AMQ filters' 140 member sets… the identifiers of the nodes affected by a change are fed to the graph server 120 as a change stream, to compare against one or more AMQ filters 140”) that represents the different AMQ data sets (see Heen, [0037] “The index structure of the view or subgraph spanned by the query in some aspects is recorded in association with the AMQ filter 140. The relational graph is spanned in a tree structure; a root node from which other leaf nodes depend is spanned outwardly from by the graph server 120 along the edges, which act as branches from one node to the next. The identifiers of each of the nodes in the view are collected according to the tree structure, and the structure collapsed… Recording the index structure allows for changes to the view to be tracked, such as, for example, the addition of a new node to the view, which was not part of the original member set of the AMQ filter 140, but potentially affects the view returned by the query”; [0042] “The change stream contains identifiers of the nodes or index structures affected by a change, and the AMQ filter 140 is queried to determine whether that identifier appears to be a member of the set recorded in the AMQ filter 140” – there are different data sets in form of graphs/subgraphs) in a memory device (see Heen, [0013] “the index structure for the view are added… querying the relational graph among other benefits provided by AMQ filters, including improved memory storage space requirements”; [0057] “The system memory 304, the removable storage device 309, and the non-removable storage device 310 are all computer storage media examples (i.e., memory storage.)… can be used to store information and which can be accessed by the computing device 300”).
Heen does not explicitly teach by interweaving bits read from each bit position from within the different AMQ data sets.
However, Hagerup discloses processing set of log data and teaches
by interweaving bits read from each bit position from within data (see Hagerup, [col 10 lines 7-46] “for querying the index and determining a set of log data that are inclusive in a queried time range… a query request may include a first timestamp and a second timestamp… Once encoded, the bits of the first timestamp and the second timestamp may be combined or interweaved. Combining the bits of the first timestamp and second timestamp may, in some instances, simply mean concatenating the bits of the first timestamp and second timestamp together… combining the bits means taking a first bit in the first position of the first timestamp, then adding the first bit in the first position of the second timestamp, then adding the second bit in the second position of the first timestamp… the encoded start and end timestamps may be represented as an index value represented in bits such as "0" and "1"'s up to a maximum 48-bit value… however, different embodiments may have different lengths”; [col 21 lines 9-14] “a set having three members, the conjunctive phrases "at least one of A, B, and C" and "at least one of A, B and C" refer to any of the following sets: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}, and, if not contradicted explicitly or by context, any set having {A}, {B}, and/or {C} as a subset ( e.g., sets with multiple "A")”).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to include the functionality of interwoven bit data being disclosed and taught by Hagerup, in the system taught by Heen to yield the predictable results of improving user experience (see Hagerup, [col 3 lines 39-57] “Based on this, techniques of the present disclosure provide for advantageous creation of an index and index values by interweaving the quantized start and end time trimmed… As a result of this processing, the computing resources to process searching and locating log data may also consequently be reduced and thereby create a more tailored search environment while also improving user experience”).
Regarding claim 4, the proposed combination of Heen and Hagerup teaches
further comprising reading the bits from the each bit position (see Hagerup, [col 10 lines 37-40] “taking a first bit in the first position of the first timestamp, then adding the first bit in the first position of the second timestamp, then adding the second bit in the second position of the first timestamp”) associated with each different AMQ data set of the different AMQ data sets (see Heen, [0013] “Each node from the relational graph spanned by a graph query and the index structure for the view are added as members to an AMQ filter”; [0036] “the identifiers for nodes connected by an edge to a node part of or considered as potentially part of the view, and/or an index structure are selected for membership in the AMQ filter 140. The selected identifiers are fed to each of the hash functions, which return a position in the membership array. The bit at each of the returned positions is set to indicate membership (e.g., setting the bit to one/TRUE), and any overlapping/repeated positions results in the bit remaining set to one/TRUE”). The motivation for the proposed combination is maintained.
Regarding claim 5, the proposed combination of Heen and Hagerup teaches
further comprising writing (see Heen, [0032] “an index structure is created”) the single AMQ data set (see Heen, [0022] “the index structure of the nodes in the view is treated as a member of the AMQ filter's 140 member set or is stored separately… An index structure is constructed by concatenating the identifiers of the nodes in a flattened tree structure. In response to a node being updated, added, or removed in the graph database 130, the graph server 120 is operable to query one or more AMQ filters 140 to determine whether the affected node is part of those AMQ filters' 140 member sets… the identifiers of the nodes affected by a change are fed to the graph server 120 as a change stream, to compare against one or more AMQ filters 140”).
Regarding claim 8, the proposed combination of Heen and Hagerup teaches
further comprising determining a membership associated with member set recorded (see Heen, [0028] “to determine whether a node is part of the member set recorded”; [0042] “the AMQ filter 140 is queried to determine whether that identifier appears to be a member of the set recorded in the AMQ filter 140”) the single AMQ data set (see Heen, [0022] “the index structure of the nodes in the view is treated as a member of the AMQ filter's 140 member set or is stored separately… An index structure is constructed by concatenating the identifiers of the nodes in a flattened tree structure. In response to a node being updated, added, or removed in the graph database 130, the graph server 120 is operable to query one or more AMQ filters 140 to determine whether the affected node is part of those AMQ filters' 140 member sets… the identifiers of the nodes affected by a change are fed to the graph server 120 as a change stream, to compare against one or more AMQ filters 140”).
Claims 2-3, 6-7 and 21-28 are rejected under 35 U.S.C. 103 as being unpatentable over Heen in view of Hagerup further in view of Tan et al. (US 2017/0177302 A1, hereinafter “Tan”).
Regarding claim 2, the proposed combination of Heen and Hagerup teaches
wherein the generating of the single AMQ data set further comprises… (see Heen, [0022] “the index structure of the nodes in the view is treated as a member of the AMQ filter's 140 member set or is stored separately… An index structure is constructed by concatenating the identifiers of the nodes in a flattened tree structure. In response to a node being updated, added, or removed in the graph database 130, the graph server 120 is operable to query one or more AMQ filters 140 to determine whether the affected node is part of those AMQ filters' 140 member sets… the identifiers of the nodes affected by a change are fed to the graph server 120 as a change stream, to compare against one or more AMQ filters 140”) the bits read from the each bit position from within timestamp (see Hagerup, [col 10 lines 37-40] “taking a first bit in the first position of the first timestamp, then adding the first bit in the first position of the second timestamp, then adding the second bit in the second position of the first timestamp”) the different AMQ data sets (see Heen, [0037] “The index structure of the view or subgraph spanned by the query in some aspects is recorded in association with the AMQ filter 140. The relational graph is spanned in a tree structure; a root node from which other leaf nodes depend is spanned outwardly from by the graph server 120 along the edges, which act as branches from one node to the next. The identifiers of each of the nodes in the view are collected according to the tree structure, and the structure collapsed… Recording the index structure allows for changes to the view to be tracked, such as, for example, the addition of a new node to the view, which was not part of the original member set of the AMQ filter 140, but potentially affects the view returned by the query”; [0042] “The change stream contains identifiers of the nodes or index structures affected by a change, and the AMQ filter 140 is queried to determine whether that identifier appears to be a member of the set recorded in the AMQ filter 140” – there are different data sets in form of graphs/subgraphs).
The proposed combination of Heen and Hagerup does not explicitly teach using a bitwise OR operation.
However, Tan discloses data transformation and teaches
using a bitwise OR operation on each bit position (see Tan, [0047] “performing a bit-wise exclusive-OR operation for each bit position of the array”).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to include the functionality of bitwise OR operation as being disclosed and taught by Tan, in the system taught by the proposed combination of Heen and Hagerup to yield the predictable results of effectively transforming data (see Tan, [0064] “a captured data gathering module to interface with the plurality of data capture devices and to read data output from each of the plurality of data capture devices, the data output having a randonmess characteristic; a captured data aggregation module to combine the data output from at least two different data capture devices of the plurality of data capture devices to produce an aggregated output: and a transformation module to compute a transformation of the aggregated output to produce a distinctive value”).
Regarding claim 3, the proposed combination of Heen and Hagerup teaches
wherein the generating of the single AMQ data set further comprises… (see Heen, [0022] “the index structure of the nodes in the view is treated as a member of the AMQ filter's 140 member set or is stored separately… An index structure is constructed by concatenating the identifiers of the nodes in a flattened tree structure. In response to a node being updated, added, or removed in the graph database 130, the graph server 120 is operable to query one or more AMQ filters 140 to determine whether the affected node is part of those AMQ filters' 140 member sets… the identifiers of the nodes affected by a change are fed to the graph server 120 as a change stream, to compare against one or more AMQ filters 140”) the bits read from the each bit position (see Hagerup, [col 10 lines 37-40] “taking a first bit in the first position of the first timestamp, then adding the first bit in the first position of the second timestamp, then adding the second bit in the second position of the first timestamp”).
The proposed combination of Heen and Hagerup does not explicitly teach collapsing the bits read.
However, Tan discloses data transformation and teaches
collapsing data items (see Tan, [0047] “for collapsing the large data item is performing a bit-wise exclusive-OR operation for each bit position of the array. The result is a single data item, M-bits wide, that is derived based on every bit of the captured data item”).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to include the functionality of collapsing as being disclosed and taught by Tan, in the system taught by the proposed combination of Heen and Hagerup to yield the predictable results of effectively transforming data (see Tan, [0064] “a captured data gathering module to interface with the plurality of data capture devices and to read data output from each of the plurality of data capture devices, the data output having a randonmess characteristic; a captured data aggregation module to combine the data output from at least two different data capture devices of the plurality of data capture devices to produce an aggregated output: and a transformation module to compute a transformation of the aggregated output to produce a distinctive value”).
Regarding claim 6, the proposed combination of Heen and Hagerup teaches
wherein the generating of the single AMQ data set further comprises… (see Heen, [0022] “the index structure of the nodes in the view is treated as a member of the AMQ filter's 140 member set or is stored separately… An index structure is constructed by concatenating the identifiers of the nodes in a flattened tree structure. In response to a node being updated, added, or removed in the graph database 130, the graph server 120 is operable to query one or more AMQ filters 140 to determine whether the affected node is part of those AMQ filters' 140 member sets… the identifiers of the nodes affected by a change are fed to the graph server 120 as a change stream, to compare against one or more AMQ filters 140”) the bits read from the each bit position (see Hagerup, [col 10 lines 37-40] “taking a first bit in the first position of the first timestamp, then adding the first bit in the first position of the second timestamp, then adding the second bit in the second position of the first timestamp”).
The proposed combination of Heen and Hagerup does not explicitly teach aggregating the bits read.
However, Tan discloses data transformation and teaches
aggregating data items (see Tan, [0047] “may be collapsed into a M-bit-wide representation suitable for use as a data item to be aggregated with other data items”).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to include the functionality of aggregating data as being disclosed and taught by Tan, in the system taught by the proposed combination of Heen and Hagerup to yield the predictable results of effectively transforming data (see Tan, [0064] “a captured data gathering module to interface with the plurality of data capture devices and to read data output from each of the plurality of data capture devices, the data output having a randonmess characteristic; a captured data aggregation module to combine the data output from at least two different data capture devices of the plurality of data capture devices to produce an aggregated output: and a transformation module to compute a transformation of the aggregated output to produce a distinctive value”).
Regarding claim 7, the proposed combination of Heen and Hagerup teaches
wherein the generating of the single AMQ data set (see Heen, [0022] “the index structure of the nodes in the view is treated as a member of the AMQ filter's 140 member set or is stored separately… An index structure is constructed by concatenating the identifiers of the nodes in a flattened tree structure. In response to a node being updated, added, or removed in the graph database 130, the graph server 120 is operable to query one or more AMQ filters 140 to determine whether the affected node is part of those AMQ filters' 140 member sets… the identifiers of the nodes affected by a change are fed to the graph server 120 as a change stream, to compare against one or more AMQ filters 140”) interwoven composite (see Hagerup, [col 10 lines 7-46] “for querying the index and determining a set of log data that are inclusive in a queried time range… a query request may include a first timestamp and a second timestamp… Once encoded, the bits of the first timestamp and the second timestamp may be combined or interweaved. Combining the bits of the first timestamp and second timestamp may, in some instances, simply mean concatenating the bits of the first timestamp and second timestamp together… combining the bits means taking a first bit in the first position of the first timestamp, then adding the first bit in the first position of the second timestamp, then adding the second bit in the second position of the first timestamp… the encoded start and end timestamps may be represented as an index value represented in bits such as "0" and "1"'s up to a maximum 48-bit value… however, different embodiments may have different lengths”; [col 21 lines 9-14] “a set having three members, the conjunctive phrases "at least one of A, B, and C" and "at least one of A, B and C" refer to any of the following sets: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}, and, if not contradicted explicitly or by context, any set having {A}, {B}, and/or {C} as a subset ( e.g., sets with multiple "A")”) membership representation further comprises… (see Heen, [0037] “The index structure of the view or subgraph spanned by the query in some aspects is recorded in association with the AMQ filter 140. The relational graph is spanned in a tree structure; a root node from which other leaf nodes depend is spanned outwardly from by the graph server 120 along the edges, which act as branches from one node to the next. The identifiers of each of the nodes in the view are collected according to the tree structure, and the structure collapsed… Recording the index structure allows for changes to the view to be tracked, such as, for example, the addition of a new node to the view, which was not part of the original member set of the AMQ filter 140, but potentially affects the view returned by the query”; [0042] “The change stream contains identifiers of the nodes or index structures affected by a change, and the AMQ filter 140 is queried to determine whether that identifier appears to be a member of the set recorded in the AMQ filter 140” – there are different data sets in form of graphs/subgraphs”) the bits read from the each bit position (see Hagerup, [col 10 lines 37-40] “taking a first bit in the first position of the first timestamp, then adding the first bit in the first position of the second timestamp, then adding the second bit in the second position of the first timestamp”).
The proposed combination of Heen and Hagerup does not explicitly teach co-locating the bits read.
However, Tan discloses data transformation and teaches
co-locating the bitmap (see Tan, [0047] “the bitmap may be stored as an array in M-bit-wide memory registers spanning a large number of memory addresses” – storing as an array has been interpreted as co-locating).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to include the functionality of co-locating information as being disclosed and taught by Tan, in the system taught by the proposed combination of Heen and Hagerup to yield the predictable results of effectively transforming data (see Tan, [0064] “a captured data gathering module to interface with the plurality of data capture devices and to read data output from each of the plurality of data capture devices, the data output having a randonmess characteristic; a captured data aggregation module to combine the data output from at least two different data capture devices of the plurality of data capture devices to produce an aggregated output: and a transformation module to compute a transformation of the aggregated output to produce a distinctive value”).
Regarding claim 21, Heen teaches
At least one computer system that (see Heen, [0013] “Computationally less intensive methods for monitoring changes to a relationship graph, and systems that employ said methods, are provided herein”) generates a single approximate membership query (AMQ) data set, comprising: (see Heen, [0022] “the index structure of the nodes in the view is treated as a member of the AMQ filter's 140 member set or is stored separately… An index structure is constructed by concatenating the identifiers of the nodes in a flattened tree structure. In response to a node being updated, added, or removed in the graph database 130, the graph server 120 is operable to query one or more AMQ filters 140 to determine whether the affected node is part of those AMQ filters' 140 member sets… the identifiers of the nodes affected by a change are fed to the graph server 120 as a change stream, to compare against one or more AMQ filters 140”; [0015] “Each of the client device 110 and graph server 120 are illustrative of a multitude of computing systems”).
at least one central processing unit; and (see Heen, [0054] “the computing device 300 includes at least one processing unit 302”).
at least one memory device storing instructions that, when executed by the at least one central processing unit, perform operations, the operations comprising: (see Heen, [0057] “Computer storage media include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, or program modules”; [claim 12] “a processor; and a memory storage device, including instructions that when executed are operable to”; [0031] “Method 200 begins at OPERATION 210”).
receiving AMQ information (see Heen, [0042] “An identifier received from the change stream is hashed, as though it were being added to the member set of the AMQ filter 140, to produce several positions in the array at which the corresponding node or index structures would be recorded”) multiple AMQ data sets; (see Heen, [0021] “maintains one or more AMQ filters 140 (Approximate Membership Query filters)”; [0022] “response to a node being updated, added, or removed in the graph database 130, the graph server 120 is operable to query one or more AMQ filters 140 to determine whether the affected node is part of those AMQ filters' 140 member sets” – there are plurality of member sets).
… within each AMQ dataset of the multiple AMQ data sets; (see Heen, [0013] “Each node from the relational graph spanned by a graph query and the index structure for the view are added as members to an AMQ filter”; [0036] “the identifiers for nodes connected by an edge to a node part of or considered as potentially part of the view, and/or an index structure are selected for membership in the AMQ filter 140. The selected identifiers are fed to each of the hash functions, which return a position in the membership array. The bit at each of the returned positions is set to indicate membership (e.g., setting the bit to one/TRUE), and any overlapping/repeated positions results in the bit remaining set to one/TRUE”).
generating the single AMQ data set (see Heen, [0022] “the index structure of the nodes in the view is treated as a member of the AMQ filter's 140 member set or is stored separately… An index structure is constructed by concatenating the identifiers of the nodes in a flattened tree structure. In response to a node being updated, added, or removed in the graph database 130, the graph server 120 is operable to query one or more AMQ filters 140 to determine whether the affected node is part of those AMQ filters' 140 member sets… the identifiers of the nodes affected by a change are fed to the graph server 120 as a change stream, to compare against one or more AMQ filters 140”) that represents the multiple AMQ data sets (see Heen, [0021] “maintains one or more AMQ filters 140 (Approximate Membership Query filters)”; [0022] “response to a node being updated, added, or removed in the graph database 130, the graph server 120 is operable to query one or more AMQ filters 140 to determine whether the affected node is part of those AMQ filters' 140 member sets” – there are plurality of member sets) by conducting a logical bitwise… (see Heen, [0028] “are bitwise-logically examined against the array”) within the each AMQ dataset of the multiple AMQ data sets; and (see Heen, [0013] “Each node from the relational graph spanned by a graph query and the index structure for the view are added as members to an AMQ filter”; [0036] “the identifiers for nodes connected by an edge to a node part of or considered as potentially part of the view, and/or an index structure are selected for membership in the AMQ filter 140. The selected identifiers are fed to each of the hash functions, which return a position in the membership array. The bit at each of the returned positions is set to indicate membership (e.g., setting the bit to one/TRUE), and any overlapping/repeated positions results in the bit remaining set to one/TRUE”).
storing information (see Heen, [0057] “The system memory 304, the removable storage device 309, and the non-removable storage device 310 are all computer storage media examples (i.e., memory storage.)… can be used to store information and which can be accessed by the computing device 300”) the single AMQ data set… (see Heen, [0022] “the index structure of the nodes in the view is treated as a member of the AMQ filter's 140 member set or is stored separately… An index structure is constructed by concatenating the identifiers of the nodes in a flattened tree structure. In response to a node being updated, added, or removed in the graph database 130, the graph server 120 is operable to query one or more AMQ filters 140 to determine whether the affected node is part of those AMQ filters' 140 member sets… the identifiers of the nodes affected by a change are fed to the graph server 120 as a change stream, to compare against one or more AMQ filters 140”) the multiple AMQ data sets (see Heen, [0021] “maintains one or more AMQ filters 140 (Approximate Membership Query filters)”; [0022] “response to a node being updated, added, or removed in the graph database 130, the graph server 120 is operable to query one or more AMQ filters 140 to determine whether the affected node is part of those AMQ filters' 140 member sets” – there are plurality of member sets).
Heen does not explicitly teach reading bits at each bit position from within each AMQ dataset; logical bitwise OR operation on the bits read at the each bit position from within the each AMQ dataset; as a bit level blend of the multiple AMQ data sets.
However, Hagerup discloses processing set of log data and teaches
reading bits at each bit position from timestamp (see Hagerup, [col 10 lines 37-40] “taking a first bit in the first position of the first timestamp, then adding the first bit in the first position of the second timestamp, then adding the second bit in the second position of the first timestamp”).
… the bits read at the each bit position from timestamp (see Hagerup, [col 10 lines 37-40] “taking a first bit in the first position of the first timestamp, then adding the first bit in the first position of the second timestamp, then adding the second bit in the second position of the first timestamp”).
… as a bit level blend of data (see Hagerup, [col 9 lines 42-65] “beginning timestamp and the encoded end timestamp are interwoven, the resulting interwoven encoded bits may then be translated or mapped… the padded index value may then be stored or added in a B-Tree in connection with a storage device provided by the computing resource service provider”; [col 10 lines 7-46] “for querying the index and determining a set of log data that are inclusive in a queried time range… a query request may include a first timestamp and a second timestamp… Once encoded, the bits of the first timestamp and the second timestamp may be combined or interweaved. Combining the bits of the first timestamp and second timestamp may, in some instances, simply mean concatenating the bits of the first timestamp and second timestamp together… combining the bits means taking a first bit in the first position of the first timestamp, then adding the first bit in the first position of the second timestamp, then adding the second bit in the second position of the first timestamp… different embodiments may have different lengths”).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to include the functionality of bits read at each position and bit level blend being disclosed and taught by Hagerup, in the system taught by Heen to yield the predictable results of improving user experience (see Hagerup, [col 3 lines 39-57] “Based on this, techniques of the present disclosure provide for advantageous creation of an index and index values by interweaving the quantized start and end time trimmed… As a result of this processing, the computing resources to process searching and locating log data may also consequently be reduced and thereby create a more tailored search environment while also improving user experience”).
The proposed combination of Heen and Hagerup does not explicitly teach logical bitwise OR operation on the bits read at the each bit position.
However, Tan discloses data transformation and teaches
OR operation on each position (see Tan, [0047] “performing a bit-wise exclusive-OR operation for each bit position of the array”).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to include the functionality of OR operation, co-locating and collapsing information as being disclosed and taught by Tan, in the system taught by the proposed combination of Heen and Hagerup to yield the predictable results of effectively transforming data (see Tan, [0064] “a captured data gathering module to interface with the plurality of data capture devices and to read data output from each of the plurality of data capture devices, the data output having a randonmess characteristic; a captured data aggregation module to combine the data output from at least two different data capture devices of the plurality of data capture devices to produce an aggregated output: and a transformation module to compute a transformation of the aggregated output to produce a distinctive value”).
Regarding claim 22, the proposed combination of Heen, Hagerup and Tan teaches
wherein the operations further comprise conducting a single membership test (see Heen, [0026] “a structure to test whether node is a candidate member of a set”) of the multiple AMQ data sets (see Heen, [0021] “maintains one or more AMQ filters 140 (Approximate Membership Query filters)”; [0022] “response to a node being updated, added, or removed in the graph database 130, the graph server 120 is operable to query one or more AMQ filters 140 to determine whether the affected node is part of those AMQ filters' 140 member sets” – there are plurality of member sets) by using the single AMQ data set (see Heen, [0022] “the index structure of the nodes in the view is treated as a member of the AMQ filter's 140 member set or is stored separately… An index structure is constructed by concatenating the identifiers of the nodes in a flattened tree structure. In response to a node being updated, added, or removed in the graph database 130, the graph server 120 is operable to query one or more AMQ filters 140 to determine whether the affected node is part of those AMQ filters' 140 member sets… the identifiers of the nodes affected by a change are fed to the graph server 120 as a change stream, to compare against one or more AMQ filters 140”) as the bit level blend of data (see Hagerup, [col 9 lines 42-65] “beginning timestamp and the encoded end timestamp are interwoven, the resulting interwoven encoded bits may then be translated or mapped… the padded index value may then be stored or added in a B-Tree in connection with a storage device provided by the computing resource service provider”; [col 10 lines 7-46] “for querying the index and determining a set of log data that are inclusive in a queried time range… a query request may include a first timestamp and a second timestamp… Once encoded, the bits of the first timestamp and the second timestamp may be combined or interweaved. Combining the bits of the first timestamp and second timestamp may, in some instances, simply mean concatenating the bits of the first timestamp and second timestamp together… combining the bits means taking a first bit in the first position of the first timestamp, then adding the first bit in the first position of the second timestamp, then adding the second bit in the second position of the first timestamp… different embodiments may have different lengths”) the multiple AMQ datasets (see Heen, [0021] “maintains one or more AMQ filters 140 (Approximate Membership Query filters)”; [0022] “response to a node being updated, added, or removed in the graph database 130, the graph server 120 is operable to query one or more AMQ filters 140 to determine whether the affected node is part of those AMQ filters' 140 member sets” – there are plurality of member sets). The motivation for the proposed combination is maintained.
Regarding claim 23, the proposed combination of Heen, Hagerup and Tan teaches
wherein the operations further comprise (see Heen, [0031] “Method 200 begins at OPERATION 210”) collapsing (see Tan, [0047] “for collapsing the large data item is performing a bit-wise exclusive-OR operation for each bit position of the array. The result is a single data item, M-bits wide, that is derived based on every bit of the captured data item”) the bits read at the each bit position (see Hagerup, [col 10 lines 37-40] “taking a first bit in the first position of the first timestamp, then adding the first bit in the first position of the second timestamp, then adding the second bit in the second position of the first timestamp”). The motivation for the proposed combination is maintained.
Regarding claim 24, the proposed combination of Heen, Hagerup and Tan teaches
wherein the operations further comprise (see Heen, [0031] “Method 200 begins at OPERATION 210”) reducing a byte size (see Heen, [0033] “a reduced size version of the queried relational graph”) associated with the multiple AMQ data sets (see Heen, [0021] “maintains one or more AMQ filters 140 (Approximate Membership Query filters)”; [0022] “response to a node being updated, added, or removed in the graph database 130, the graph server 120 is operable to query one or more AMQ filters 140 to determine whether the affected node is part of those AMQ filters' 140 member sets” – there are plurality of member sets). The motivation for the proposed combination is maintained.
Regarding claim 25, the proposed combination of Heen, Hagerup and Tan teaches
wherein the operations further comprise (see Heen, [0031] “Method 200 begins at OPERATION 210”) collapsing the bits (see Tan, [0047] “for collapsing the large data item is performing a bit-wise exclusive-OR operation for each bit position of the array. The result is a single data item, M-bits wide, that is derived based on every bit of the captured data item”) associated with the multiple AMQ data sets (see Heen, [0021] “maintains one or more AMQ filters 140 (Approximate Membership Query filters)”; [0022] “response to a node being updated, added, or removed in the graph database 130, the graph server 120 is operable to query one or more AMQ filters 140 to determine whether the affected node is part of those AMQ filters' 140 member sets” – there are plurality of member sets) according to the bit positions (see Hagerup, [col 10 lines 37-40] “taking a first bit in the first position of the first timestamp, then adding the first bit in the first position of the second timestamp, then adding the second bit in the second position of the first timestamp”) using the logical bitwise (see Heen, [0028] “are bitwise-logically examined against the array”) OR operation (see Tan, [0047] “performing a bit-wise exclusive-OR operation for each bit position of the array”). The motivation for the proposed combination is maintained.
Regarding claim 26, the proposed combination of Heen, Hagerup and Tan teaches
wherein the operations further comprise (see Heen, [0031] “Method 200 begins at OPERATION 210”) aggregating (see Tan, [0047] “may be collapsed into a M-bit-wide representation suitable for use as a data item to be aggregated with other data items”) the bits read at the each bit position (see Hagerup, [col 10 lines 37-40] “taking a first bit in the first position of the first timestamp, then adding the first bit in the first position of the second timestamp, then adding the second bit in the second position of the first timestamp”). The motivation for the proposed combination is maintained.
Regarding claim 27, the proposed combination of Heen, Hagerup and Tan teaches
wherein the operations further comprise (see Heen, [0031] “Method 200 begins at OPERATION 210”) co-locating (see Tan, [0047] “the bitmap may be stored as an array in M-bit-wide memory registers spanning a large number of memory addresses” – storing as an array has been interpreted as co-locating) the bits read at the each bit position (see Hagerup, [col 10 lines 37-40] “taking a first bit in the first position of the first timestamp, then adding the first bit in the first position of the second timestamp, then adding the second bit in the second position of the first timestamp”). The motivation for the proposed combination is maintained.
Regarding claim 28, the proposed combination of Heen, Hagerup and Tan teaches
wherein the operations further comprise (see Heen, [0031] “Method 200 begins at OPERATION 210”) determining a membership associated with the single AMQ data set (see Heen, [0022] “the index structure of the nodes in the view is treated as a member of the AMQ filter's 140 member set or is stored separately… An index structure is constructed by concatenating the identifiers of the nodes in a flattened tree structure. In response to a node being updated, added, or removed in the graph database 130, the graph server 120 is operable to query one or more AMQ filters 140 to determine whether the affected node is part of those AMQ filters' 140 member sets… the identifiers of the nodes affected by a change are fed to the graph server 120 as a change stream, to compare against one or more AMQ filters 140”).
Conclusion
THIS ACTION IS MADE FINAL. Applicant is reminded of the extension of time policy as set forth in 37 CFR 1.136(a).
A shortened statutory period for reply to this final action is set to expire THREE MONTHS from the mailing date of this action. In the event a first reply is filed within TWO MONTHS of the mailing date of this final action and the advisory action is not mailed until after the end of the THREE-MONTH shortened statutory period, then the shortened statutory period will expire on the date the advisory action is mailed, and any nonprovisional extension fee (37 CFR 1.17(a)) pursuant to 37 CFR 1.136(a) will be calculated from the mailing date of the advisory action. In no event, however, will the statutory period for reply expire later than SIX MONTHS from the mailing date of this final action.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to VAISHALI SHAH whose telephone number is (571)272-8532. The examiner can normally be reached Monday - Friday (7:30 AM to 4:00 PM).
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, AJAY BHATIA can be reached at (571)272-3906. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/VAISHALI SHAH/Primary Examiner, Art Unit 2156