IP Library Granted Patent US 12,229,096
Granted Patent B2
US 12,229,096 · App. 18/419,625 · Granted Feb 18, 2025

Token based dynamic data indexing with integrated security

Inventors: Shashank Gupta (Sammamish, WA); Amit Prakash (Saratoga, CA); Ajeet Singh (Saratoga, CA); Shikhar Agarwal (Mountain View, CA); Shailesh Chauhan (Fremont, CA); Satyam Shekhar (San Jose, CA)
Assignee: Thoughtspot, Inc.
G06F16/22G06F16/2272G06F16/2423G06F16/243G06F16/24522G06F16/3329G06F16/3334G06F16/38G06F16/90324G06F16/951G06N5/04
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,229,096
App. No.
18/419,625
Granted
Feb 18, 2025
Kind
B2
Abstract

Semantic analysis to resolve ambiguous user input data with respect to a request for data includes identifying tokens based on the text string, identifying a tables in a database, wherein a token indicates a column from a table and a token indicates a column from another table, identifying candidate join paths for joining tables, obtaining respective candidate results using the candidate join paths, outputting combined candidate results including values from the respective candidate results, obtaining second user input data indicating a selected value, identifying the request for data as unambiguous and identifying a selected join path based on the selected value, and, in response to identifying the request for data as unambiguous, outputting data responsive to the request for data using the selected join path.

Claims (143)

1. A method comprising:

obtaining, by an information retrieval system, from a database management system, enterprise data;

automatically generating, by the information retrieval system, enterprise data tokens representing the enterprise data;

automatically indexing, by the information retrieval system, the enterprise data tokens in an index structure of the information retrieval system;

obtaining, by the information retrieval system, first user input data including a natural language string expressing a request for data from the information retrieval system;

automatically generating, by the information retrieval system, a semantic representation of the natural language string, in a form that differs from a structured query language of the database management system, wherein generating the semantic representation includes:

traversing the index structure to match a portion of the natural language string to an enterprise data token from the enterprise data tokens; and

including the enterprise data token in the semantic representation;

automatically converting, by the information retrieval system, the semantic representation into a structured query language query expressing the request for data;

obtaining, by the information retrieval system, from the database management system, in response to the structured query language query, results data responsive to the request for data; and

automatically outputting, for presentation to a user, the results data.

2. The method of claim 1 , wherein indexing the enterprise data tokens includes:

including, in the index structure, a root node;

including, in the index structure, a first branch depending from the root node, the first branch representing a first symbol from the enterprise data token; and

including, in the index structure, a security bitmask for the enterprise data token, such that a security bitmask for the first branch at the root node is a hierarchical logical disjunction based on the security bitmask for the enterprise data token.

3. The method of claim 2 , wherein:

obtaining the first user input data includes obtaining a security bitmask for the first user input data; and

automatically generating the semantic representation includes:

determining that the first symbol matches a symbol from the portion of the natural language string; and

determining that a horizontal logical disjunction of a vertical logical conjunction of the security bitmask for the first branch and the security bitmask for the first user input data indicates authorization.

4. The method of claim 1 , wherein:

obtaining the first user input data includes obtaining the first user input data from a user device; and

automatically outputting the results data includes outputting the results data to the user device.

5. The method of claim 1 , wherein:

automatically indexing the enterprise data tokens includes:

including, in the index structure, data indicating an association between the enterprise data token and a first table stored in the database management system; and

including, in the index structure, data indicating an association between a second enterprise data token from the enterprise data tokens and a second table stored in the database management system;

automatically generating the semantic representation includes:

traversing the index structure to match a second portion of the natural language string to the second enterprise data token;

including the second enterprise data token in the semantic representation;

identifying a join path for joining data from the first table with data from the second table;

including data indicating the join path in the semantic representation; and

automatically converting the semantic representation includes:

including data indicating the join path in the structured query language query.

6. The method of claim 5 , wherein:

obtaining the enterprise data includes:

obtaining relationship data indicating a relationship between the first table and the second table stored; and

storing the relationship data in the information retrieval system; and

identifying the join path includes using the relationship data.

7. The method of claim 1 , wherein:

automatically indexing the enterprise data tokens includes:

including, in the index structure, data indicating an association between the enterprise data token and a column of a table stored in the database management system; and

automatically generating the semantic representation includes:

in response to determining, by a finite state machine of the information retrieval system, that the column is a measure column, including, in the semantic representation, data indicating an aggregation operation with respect to the measure column.

8. The method of claim 1 , wherein:

automatically indexing the enterprise data tokens includes:

including, in the index structure, data indicating an association between the enterprise data token and a first column of a first table stored in the database management system;

automatically generating the semantic representation includes:

identifying candidate joint paths, wherein identifying the candidate join paths includes:

identifying a first candidate join path for joining data from the first column with data from a second column from a second table stored in the database management system; and

identifying a second candidate join path for joining data from the first column with data from a third column from the second table;

obtaining second user input data indicating a join path from the candidate join paths;

including data indicating the join path in the semantic representation; and

automatically converting the semantic representation includes:

including data indicating the join path in the structured query language query.

9. A non-transitory computer-readable storage medium, comprising executable instructions that, when executed by a processor, facilitate performance of operations, comprising:

obtaining, by an information retrieval system, from a database management system, enterprise data;

automatically generating, by the information retrieval system, enterprise data tokens representing the enterprise data;

automatically indexing, by the information retrieval system, the enterprise data tokens in an index structure of the information retrieval system;

obtaining, by the information retrieval system, first user input data including a natural language string expressing a request for data from the information retrieval system;

automatically generating, by the information retrieval system, a semantic representation of the natural language string, in a form that differs from a structured query language of the database management system, wherein generating the semantic representation includes:

traversing the index structure to match a portion of the natural language string to an enterprise data token from the enterprise data tokens; and

including the enterprise data token in the semantic representation;

automatically converting, by the information retrieval system, the semantic representation into a structured query language query expressing the request for data;

obtaining, by the information retrieval system, from the database management system, in response to the structured query language query, results data responsive to the request for data; and

automatically outputting, for presentation to a user, the results data.

10. The non-transitory computer-readable storage medium of claim 9 , wherein indexing the enterprise data tokens includes:

including, in the index structure, a root node;

including, in the index structure, a first branch depending from the root node, the first branch representing a first symbol from the enterprise data token; and

including, in the index structure, a security bitmask for the enterprise data token, such that a security bitmask for the first branch at the root node is a hierarchical logical disjunction based on the security bitmask for the enterprise data token.

11. The non-transitory computer-readable storage medium of claim 10 , wherein:

obtaining the first user input data includes obtaining a security bitmask for the first user input data; and

automatically generating the semantic representation includes:

determining that the first symbol matches a symbol from the portion of the natural language string; and

determining that a horizontal logical disjunction of a vertical logical conjunction of the security bitmask for the first branch and the security bitmask for the first user input data indicates authorization.

12. The non-transitory computer-readable storage medium of claim 9 , wherein:

obtaining the first user input data includes obtaining the first user input data from a user device; and

automatically outputting the results data includes outputting the results data to the user device.

13. The non-transitory computer-readable storage medium of claim 9 , wherein:

automatically indexing the enterprise data tokens includes:

including, in the index structure, data indicating an association between the enterprise data token and a first table stored in the database management system; and

including, in the index structure, data indicating an association between a second enterprise data token from the enterprise data tokens and a second table stored in the database management system;

automatically generating the semantic representation includes:

traversing the index structure to match a second portion of the natural language string to the second enterprise data token;

including the second enterprise data token in the semantic representation;

identifying a join path for joining data from the first table with data from the second table;

including data indicating the join path in the semantic representation; and

automatically converting the semantic representation includes:

including data indicating the join path in the structured query language query.

14. The non-transitory computer-readable storage medium of claim 13 , wherein:

obtaining the enterprise data includes:

obtaining relationship data indicating a relationship between the first table and the second table stored; and

storing the relationship data in the information retrieval system; and

identifying the join path includes using the relationship data.

15. The non-transitory computer-readable storage medium of claim 9 , wherein:

automatically indexing the enterprise data tokens includes:

including, in the index structure, data indicating an association between the enterprise data token and a column of a table stored in the database management system; and

automatically generating the semantic representation includes:

in response to determining, by a finite state machine of the information retrieval system, that the column is a measure column, including, in the semantic representation, data indicating an aggregation operation with respect to the measure column.

16. The non-transitory computer-readable storage medium of claim 9 , wherein:

automatically indexing the enterprise data tokens includes:

including, in the index structure, data indicating an association between the enterprise data token and a first column of a first table stored in the database management system;

automatically generating the semantic representation includes:

identifying candidate joint paths, wherein identifying the candidate join paths includes:

identifying a first candidate join path for joining data from the first column with data from a second column from a second table stored in the database management system; and

identifying a second candidate join path for joining data from the first column with data from a third column from the second table;

obtaining second user input data indicating a join path from the candidate join paths;

including data indicating the join path in the semantic representation; and

automatically converting the semantic representation includes:

including data indicating the join path in the structured query language query.

17. An apparatus of an information retrieval system comprising:

a non-transitory computer readable medium; and

a processor configured to execute instructions stored on the non-transitory computer readable medium to:

obtain, from a database management system, enterprise data;

automatically generate enterprise data tokens representing the enterprise data;

automatically index the enterprise data tokens in an index structure of the information retrieval system;

obtain first user input data including a natural language string expressing a request for data from the information retrieval system;

automatically generate a semantic representation of the natural language string, in a form that differs from a structured query language of the database management system, wherein to automatically generate the semantic representation the processor is configured to execute the instructions to:

traverse the index structure to match a portion of the natural language string to an enterprise data token from the enterprise data tokens; and

include the enterprise data token in the semantic representation;

automatically convert the semantic representation into a structured query language query expressing the request for data;

obtain, from the database management system, in response to the structured query language query, results data responsive to the request for data; and

automatically output, for presentation to a user, the results data.

18. The apparatus of claim 17 , wherein, to index the enterprise data tokens, the processor is configured to execute the instructions to:

include, in the index structure, a root node;

include, in the index structure, a first branch depending from the root node, the first branch representing a first symbol from the enterprise data token; and

include, in the index structure, a security bitmask for the enterprise data token, such that a security bitmask for the first branch at the root node is a hierarchical logical disjunction based on the security bitmask for the enterprise data token.

19. The apparatus of claim 18 , wherein:

to obtain the first user input data the processor is configured to execute the instructions to obtain a security bitmask for the first user input data; and

to automatically generate the semantic representation the processor is configured to execute the instructions to:

determine that the first symbol matches a symbol from the portion of the natural language string; and

determine that a horizontal logical disjunction of a vertical logical conjunction of the security bitmask for the first branch and the security bitmask for the first user input data indicates authorization.

20. The apparatus of claim 17 , wherein:

to automatically index the enterprise data tokens the processor is configured to execute the instructions to:

include, in the index structure, data indicating an association between the enterprise data token and a first table stored in the database management system; and

include, in the index structure, data indicating an association between a second enterprise data token from the enterprise data tokens and a second table stored in the database management system;

to automatically generate the semantic representation the processor is configured to execute the instructions to:

traverse the index structure to match a second portion of the natural language string to the second enterprise data token;

include the second enterprise data token in the semantic representation;

identify a join path for joining data from the first table with data from the second table;

include data indicating the join path in the semantic representation; and

to automatically convert the semantic representation the processor is configured to execute the instructions to:

include data indicating the join path in the structured query language query.

Assignments (2)
SECURITY INTEREST Recorded Mar 7, 2025
From: THOUGHTSPOT, INC.; THOUGHTSPOT, LLC
To: TRIPLEPOINT CAPITAL LLC
Reel/Frame 070442/0499 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 23, 2024
From: GUPTA, SHASHANK; PRAKASH, AMIT; SINGH, AJEET; AGARWAL, SHIKHAR; CHAUHAN, SHAILESH; SHEKHAR, SATYAM
To: THOUGHTSPOT, INC.
Reel/Frame 066207/0318 →
Continuity (6)
Continuation 18169268 · Feb 15, 2023
Continuation 17327949 · May 24, 2021
Continuation 16173320 · Oct 29, 2018
Continuation 14252553 · Apr 14, 2014
Continuation In Part 13944491 · Jul 17, 2013
Related Publication 20240386004A1 · Nov 21, 2024
References Cited (58)
US 7962532B1 · Pogde · 2011 [cited by examiner]
US 8577913B1 · Hansson et al. · 2013 [cited by applicant]
US 9275132B2 · Roberts · 2016 [cited by examiner]
US 9405794B2 · Prakash · 2016 [cited by examiner]
US 10970319B2 · Bansal · 2021 [cited by examiner]
US 11017035B2 · Gupta · 2021 [cited by examiner]
US 11157564B2 · Prakash · 2021 [cited by examiner]
US 11200227B1 · Viswanathan · 2021 [cited by examiner]
US 11586620B2 · Kothari · 2023 [cited by examiner]
US 11734286B2 · Prakash · 2023 [cited by examiner]
US 20040267730A1 · Dumais et al. · 2004 [cited by applicant]
US 20050027717A1 · Koudas et al. · 2005 [cited by applicant]
US 20050289124A1 · Kaiser et al. · 2005 [cited by applicant]
US 20060143208A1 · Ramachandran · 2006 [cited by examiner]
US 20070192300A1 · Reuther et al. · 2007 [cited by applicant]
US 20070219974A1 · Chickering et al. · 2007 [cited by applicant]
US 20070234195A1 · Wells · 2007 [cited by examiner]
US 20070240154A1 · Gerzymisch · 2007 [cited by examiner]
US 20070244990A1 · Wells · 2007 [cited by examiner]
US 20080109422A1 · Dedhia · 2008 [cited by applicant]
US 20090019019A1 · Jones et al. · 2009 [cited by applicant]
US 20090019022A1 · Schallert et al. · 2009 [cited by applicant]
US 20100082636A1 · Kruus · 2010 [cited by examiner]
US 20100262631A1 · Andersson · 2010 [cited by examiner]
US 20110113048A1 · Njemanze · 2011 [cited by examiner]
US 20120066217A1 · Eder · 2012 [cited by applicant]
US 20130339370A1 · Holstege et al. · 2013 [cited by applicant]
US 20140201241A1 · Wood · 2014 [cited by examiner]
US 20140337371A1 · Li · 2014 [cited by examiner]
US 20170270159A1 · Wang · 2017 [cited by examiner]
EP 268367A2 · 1988 [cited by applicant]
EP 1587011A1 · 2005 [cited by applicant]
EP 2202658A2 · 2010 [cited by applicant]
EP 2207106A2 · 2010 [cited by applicant]
WO 0141002A1 · 2001 [cited by applicant]
WO 2015009353A1 · 2015 [cited by applicant]
Sayyadian et al., “Efficient Keyword Search Across Heterogeneous Relational Databases”, 2007, IEEE, 346-355 (10 pp). [cited by applicant]
Wu et al: “Towards Keyword-Driven Analytical Processing”, Proceedings of the 2007 ACM Sigmod International Conference on Management of Data, Sigmo '07, Jun. 12, 2007, (12 pp). [cited by applicant]
Shi et al.: “50x Faster: Speeding Up An SQL-Based Legacy System With Few Changes”, Oct. 4, 2011 Retrieved from Internet: URL: http://www.user.tu-berline.de/komm/CD/paper/040221.pdf [retrieved on Jun. 11, 2014]. (12 pp). [cited by applicant]
Blunschi et al: “SODA: Generating SQL for Business Users”, Proceedings of the VLDB Endowment, vol. 5, No. 10, Aug. 27, 2012 pp. 932-935 (12 pp). [cited by applicant]
Baid et al: “Toward Scalable Keyword Search over Relational Data”, Proceedings of the VLDS Endowment, vol. 3, No. 1-2, Sep. 1, 2010, pp. 140-149 (10 pp). [cited by applicant]
Jajodia et al., “Flexible Support for Multiple Access Control Policies”, ACM Transactions on Database Systems, ACM New York, NY, USA, vol. 26, No. 2, Jun. 1, 2001, pp. 217-228 (48 pp). [cited by applicant]
International Search Report and Written Opinion for PCT/US14/39230; Date of mailing Nov. 24, 2014 (16 pp). [cited by applicant]
Anonymous: “File System Permission—Wikipedia, The Free Encyclopedia.” Jun. 11, 2013 (Jun. 11, 2013); URL: http://en.wikipedia.org/w/index/php?title.sub.--File.sub.--system.sub.--p- ermissionsoldid=559455322 [retrieved o… [cited by applicant]
Li et al: “Efficient Type-Ahead Search on Relational Data: a TASTIER Approach”, Sigmod-Pods '09: Compilation Proceedings of the International Conference on Management Data & 28th Symposium on Principles of Database … [cited by applicant]
Anonymous, “Natural Language Processing”, Wikipedia, Downloaded Jan. 30, 2019, https://en.wikipedia.org/wiki/Natural_language_processing, (8 pp). [cited by applicant]
Seif, G., “An Easy Introduction to Natural Language Processing—Using Computers to Understand Human Language”, Oct. 1, 2018 (Downloaded Jan. 30, 2019), https://towardsdatascience.com/an-easy-introduction-to-natural-langu… [cited by applicant]
Avrach, A., thoughtspot.com, “What the Bleep is a Chasm Trap?”, https://www.thoughtspot.com/fact-and-dimension/what-bleep-chasm-trap 9/, Date Unknown, Downloaded Apr. 2, 2019 (9 pp). [cited by applicant]
Sisense, “Chasm and Fan Traps”, https://documentation.sisense.com/latest/managing-data/working-with-data/ chasm-fan-traps.htm, Date Unknown, Downloaded Apr. 2, 2019 (8 pp). [cited by applicant]
Thoughtspot, “Chasm Traps”, https://docs.thoughtspot.com/4.4/admin/loading/chasm-trap.html, Version 4.4 Guides, Date Unknown, Downloaded Apr. 2, 2019 (4 pp). [cited by applicant]
Extended European Search Report received in co-pending Application No. EP 19160657.3 dated Apr. 4, 2019 (11 pp). [cited by applicant]
Eades, Peter, et al., “A Fast & Effective Heuristic for the Feedback Arc Set Problem,” Information Processing Letters, vol. 47, Issue 6, Oct. 18, 1993, pp. 319-323. [cited by applicant]
Wikipedia, “Dijkstra's algorithm”, Date Unknown, downloaded Jul. 16, 2019, https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm (11 pp). [cited by applicant]
Wikipedia, “Consistent hashing”, https://en.wikipedia.org/wiki/Consistent_hashing, Date Unknown, Downloaded Aug. 15, 2019, (5 pp). [cited by applicant]
Morton, K., et al., “Dynamic Workload Driven Data Integration In Tableau”, Proceedings of the 2012 International Conference on Management of Data, SIGMOD '12, Jan. 1, 2012, p. 807 (9 pp). [cited by applicant]
Extended European Search Report dated Jul. 26, 2019, issued in co-pending EP Application No. 19166422.6 (11 pp). [cited by applicant]
Extended European Search Report issued in co-pending European Application No. 20176612.8 dated Sep. 2, 2020 (13 pp). [cited by applicant]
Hristidis, V., et al., “Efficient IR-Style Keyword Search Over Relational Databases”, Proceedings of the 29th International Conference on Very Large Databases: Berlin, Germany, Sep. 9, 2003 (12 pp). [cited by applicant]