# US 12,216,662 B2 · Hierarchical object tagging framework

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,216,662 B2
- Document ID: US12216662B2
- Status: Granted
- Kind: B2
- Application number: 18/447,231
- Filed: 2023-08-09
- Published: 2023-11-30
- Granted: 2025-02-04
- Earliest claimed: 2020-10-30
- Assignees: Snowflake Inc.
- Applicants: Snowflake Inc.
- Inventors: Artin Avanes; Khalid Zaman Bijon; Yujie Li; Zheng Mi; Subramanian Muralidhar; David Schultz
- Web page: https://patentgrep.com/patent/US12216662B2

## CPC

- G06F 16/24573: {using data annotations, e.g. user-defined metadata}
- G06F 16/211: {Schema design and management}
- G06F 16/212: {with details for data modelling support}
- G06F 16/2291: {User-Defined Types; Storage management thereof}
- G06F 16/2365: {Ensuring data consistency and integrity}
- G06F 16/27: Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F 16/288: {Entity relationship models}
- G06F 16/289: {Object oriented databases}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method of implementing object tagging framework starts with the processor receiving a tag creation command including a tag name. In response to the tag creation command, the processor creates a current tag. The processor then receives an association command, the tag name and a target object identifier. The processor determines a target object associated with the target object identifier. The target object includes a tag value. The processor associates the current tag with the target object. The processor identifies a first child object of the target object. The target object and the first child object are hierarchical objects. In response to determining that the first child object is tag-unassociated, the processor associates the current tag with the first child object. In response to receiving a query including the tag name, the processor generates an output based on the tag name. Other embodiments are also described herein.

## Claims

### Claim 1

A method of implementing an object tagging framework comprising:
performing, by a tag controller of a distributed database, operations comprising:
receiving, from a first client device via a network, an association command, a tag name, and a target object identifier;
creating a current tag based on the tag name;
determining from among a plurality of target objects of the distributed database one or more target objects associated with the target object identifier;
associating the current tag with each of the one or more target objects in the distributed database;
identifying one or more respective first child objects of the one or more target objects, wherein the one or more target objects and the one or more respective first child objects are related in an entity hierarchy;
in response to determining that a first child object of the one or more first child objects is tag-unassociated, performing operations comprising:
associating the current tag with the first child object;
storing the current tag and one or more tag associations of the one or more target objects and the one or more respective first child objects in a centralized metadata store of the distributed database; and
storing a state of the tag controller in a database management system on a single machine of the distributed database;
in response to receiving a query including the tag name from a second client device via the network, performing operations comprising:
finding one or more found target objects and the one or more found first child objects across the distributed database using the tag name and the one or more tag associations stored in the centralized metadata store of the distributed database;
generating an output based on the found one or more target objects and found one or more first child objects; and
causing, via the network, the output to be displayed on a display device of the second client device.

### Claim 2 (depends on 1)

The method of claim 1, wherein the first client device and the second client device are a same client device.

### Claim 3 (depends on 1)

The method of claim 1, wherein the output includes a list of entities associated with the tag name.

### Claim 4 (depends on 3)

The method of claim 3, wherein the list of entities includes the one or more target objects and the one or more respective first child objects.

### Claim 5 (depends on 3)

The method of claim 3, wherein the output includes a tag value of the one or more target objects and a child tag value included in the one or more respective first child objects.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
in response to receiving the association command,
determining that the one or more target objects are tag-associated, wherein the one or more target objects are associated with a previous tag, and
overwriting the previous tag of each respective one or more target objects using the current tag.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
in response to determining that the one or more respective first child objects is tag-associated,
causing no association of the current tag with the one or more respective first child objects to be performed.

### Claim 8 (depends on 1)

The method of claim 1, further comprising:
identifying one or more respective second child objects of the one or more target objects, wherein the one or more target objects and the one or more respective second child objects are hierarchical objects.

### Claim 9 (depends on 8)

The method of claim 8, wherein the one or more respective first child objects and the one or more respective second child object objects are hierarchical objects.

### Claim 10 (depends on 8)

The method of claim 8, further comprising:
in response to determining that the one or more respective second child objects are tag-unassociated,
associating the current tag with the one or more respective second child objects.

### Claim 11 (depends on 8)

The method of claim 8, further comprising:
in response to determining that the one or more respective second child objects are tag-associated,
causing no association of the tag with the one or more respective second child objects to be performed.

### Claim 12 (depends on 1)

The method of claim 1, further comprising;
determining a lineage information of the current tag; and
causing association of the current tag with the one or more respective first child objects based on the lineage information.

### Claim 13

A system for implementing an object tagging framework comprising:
one or more processors; and
a memory having instructions stored therein, when executed by the one or more processors, cause the system to perform operations comprising:
performing, using a tag controller of a distributed database, operations comprising:
receiving, from a first client device via a network, an association command, a tag name, and a target object identifier;
creating a current tag based on the tag name;
determining from among a plurality of target objects across the distributed database, one or more target objects associated with the target object identifier, the one or more target objects including respective tag values;
associating the current tag with each of the one or more target objects;
identifying one or more respective first child objects of the one or more target objects, wherein the one or more target objects and the one or more respective first child objects are related in an entity hierarchy;
in response to determining that a first child object of the one or more first child objects is tag-unassociated, associating the current tag with the first child object;
storing the current tag and one or more tag associations of the one or more target objects and the one or more respective first child objects in a central metadata store of the distributed database; and
storing a state of the tag controller in a database management system on a single machine of the distributed database;
in response to receiving a query including the tag name from a second client device via the network, performing operations comprising:
finding one or more found target objects and the one or more found first child objects across the distributed database using the tag name and the one or more tag associations stored in the central metadata store of the distributed database;
generating an output based on the found one or more target objects and found one or more first child objects; and
causing, via the network, the output to be displayed on a display device of the second client device.

### Claim 14 (depends on 13)

The system of claim 13, wherein the first client device and the second client device are a same client device.

### Claim 15 (depends on 13)

The system of claim 13, wherein the output includes a list of entities associated with the tag name.

### Claim 16 (depends on 15)

The system of claim 15, wherein the list of entities includes the one or more target objects and the one or more respective first child objects.

### Claim 17 (depends on 15)

The system of claim 15, wherein the output includes the tag value of the one or more target objects and a child tag value included in the one or more respective first child objects.

### Claim 18 (depends on 13)

The system of claim 13, wherein the instructions, when executed by the processor, further cause the system to perform operations comprising:
in response to receiving the association command,
determining that the one or more target objects are tag-associated, wherein the one or more target objects are associated with a previous tag, and
overwriting the previous tag of each respective one or more target objects using the current tag.

### Claim 19 (depends on 13)

The system of claim 13, wherein the instructions, when executed by the processor, further cause the system to perform operations comprising:
in response to determining that the one or more respective first child objects is tag-associated,
causing no association of the current tag with the one or more respective first child objects to be performed.

### Claim 20 (depends on 13)

The system of claim 13, wherein the instructions, when executed by the processor, further cause the system to perform operations comprising:
identifying one or more respective second child objects of the one or more target objects, wherein the one or more target objects and the one or more respective second child objects are hierarchical objects.

### Claim 21 (depends on 20)

The system of claim 20, wherein the one or more respective first child objects and the one or more respective second child object objects are hierarchical objects.

### Claim 22 (depends on 20)

The system of claim 20, wherein the instructions, when executed by the processor, further cause the system to perform operations comprising:
in response to determining that the one or more respective second child objects are tag-unassociated,
associating the current tag with the one or more respective second child objects.

### Claim 23 (depends on 20)

The system of claim 20, wherein the instructions, when executed by the processor, further cause the system to perform operations comprising:
in response to determining that the one or more respective second child objects are tag-associated,
causing no association of the tag with the one or more respective second child objects to be performed.

### Claim 24 (depends on 13)

The system of claim 13, wherein the instructions, when executed by the processor, further cause the system to perform operations comprising:
determining a lineage information of the current tag; and
causing association of the current tag with the one or more respective first child objects based on the lineage information.

### Claim 25

A non-transitory computer-readable storage medium including instructions that, when executed by a machine cause the machine to perform operations comprising:
performing, by a tag controller of a distributed database, operations comprising:
receiving, from a first client device via a network, an association command, a tag name, and a target object identifier;
creating a current tag based on the tag name;
determining from among a plurality of target objects across the distributed database, one or more target objects associated with the target object identifier, the one or more target objects including respective tag values;
associating the current tag with each of the one or more target objects in the distributed database;
identifying one or more respective first child objects of the one or more target objects, wherein the one or more target objects and the one or more respective first child objects are related in an entity hierarchy;
in response to determining that a first child object of the one or more first child objects is tag-unassociated, associating the current tag with the first child object;
storing the current tag and one or more tag associations of the one or more target objects and the one or more respective first child objects in a central metadata store of the distributed database; and
storing a state of the tag controller in a database management system on a single machine of the distributed database;
in response to receiving a query including the tag name from a second client device via the network, performing operations comprising:
finding one or more found target objects and the one or more found first child objects across the distributed database using the tag name and the one or more tag associations stored in the central metadata store of the distributed database;
generating an output based on the found one or more target objects and found one or more first child objects; and
causing, via the network, the output to be displayed on a display device of the second client device.

### Claim 26 (depends on 25)

The non-transitory computer-readable storage medium of claim 25, wherein the operations further comprise:
in response to receiving the association command,
determining that the one or more target objects are tag-associated, wherein the one or more target objects are associated with a previous tag, and
overwriting the previous tag of each respective one or more target objects using the current tag.

### Claim 27 (depends on 25)

The non-transitory computer-readable storage medium of claim 25, wherein the operations further comprise:
in response to determining that the one or more respective first child objects is tag-associated,
causing no association of the current tag with the one or more respective first child objects to be performed.

### Claim 28 (depends on 25)

The non-transitory computer-readable storage medium of claim 25, wherein the operations further comprise:
identifying one or more respective second child objects of the one or more target objects, wherein the one or more target objects and the one or more respective second child objects are hierarchical objects.

### Claim 29 (depends on 28)

The non-transitory computer-readable storage medium of claim 28, wherein the first client device and the second client device are a same client device.

### Claim 30 (depends on 28)

The non-transitory computer-readable storage medium of claim 28, wherein the operations further comprise:
in response to determining that the one or more respective second child objects are tag-unassociated,
associating the current tag with the one or more respective second child objects are; and
in response to determining that the one or more respective second child objects are tag-associated,
causing no association of the tag with the second child object to be performed.
