IP Library Granted Patent US 12,242,474
Granted Patent B1
US 12,242,474 · App. 18/162,667 · Granted Mar 4, 2025

Language conversion system

Inventors: Alexander D. James (Sammamish, WA); Ankur Dalsukhbhai Bambharoliya (Bellevue, WA); Venkatasubramanian Jayaraman (Issaquah, WA); Andrew John Peters (Sammamish, WA); Salih Ammar Wajih Zainulabdeen (Seattle, WA)
Assignee: Splunk Inc.
G06F16/24526G06F16/2433
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,242,474
App. No.
18/162,667
Granted
Mar 4, 2025
Kind
B1
Abstract

Systems and methods are described for a query conversion system to convert a first query string from a first version of a query language to a second version of the query language. The query conversion system may be associated with a tokenizer and parser, code converter, compatibility library, and a query formatter. The tokenizer and parser may tokenize and parse a query string to create a first node tree with commands. The code converter may parse the first node tree while using the compatibility library to convert the commands and generate a second node tree. The query formatter may create a second query string executable by the second version of the query language.

Claims (46)

1. A method implemented by execution of computer-executable code at a query conversion system comprising a processor, the method comprising:

receiving, by the query conversion system, a first query string in a first query language;

generating, by the query conversion system, a first node tree logically representing the first query string, wherein individual nodes of the first node tree correspond to individual commands, in the first query language, specified within the first query string;

generating, by the query conversion system, a second node tree corresponding to a second query language, wherein generating the second node tree comprises determining a conversion of the individual nodes of the first node tree, wherein conversion of each individual node in the first node tree results in a corresponding node in the second node tree that represents:

(i) when functionality equivalent to the command of the individual node in the first node tree is implemented via a native command or operation of the second query language, the native command or operation of the second query language as a converted node; and

(ii) when functionality equivalent to the command of the individual node in the first node tree is not natively implemented via a command in the second query language or by a function defined within a compatibility library, the command of the individual node in the first node tree as a non-converted node;

generating, by the query conversion system, a second query string in the second query language utilizing the second node tree, wherein the second query string comprises at least one native command or operation of the second query language corresponding to a converted node and at least one command in the first query language corresponding to a non-converted node;

executing the second query string to generate search results; and

transmitting the search results over a network to a client computing device for display.

2. The method of claim 1 , wherein at least one corresponding node in the second node tree is annotated to note that the at least one corresponding node in the second node tree represents a command in the first query language.

3. The method of claim 1 , wherein the compatibility library is a package associated with the second query language.

4. The method of claim 1 , wherein a given native command or operation of the second query language implements functionality equivalent to a command of a given node in the first node tree only if all options of the command of the given node in the first node tree are supported in the given native command or operation of the second query language.

5. The method of claim 1 , wherein a function defined within the compatibility library implements functionality equivalent to a command of a given node in the first node tree only if all options of the command of the given node in the first node tree are supported in the function defined within the compatibility library.

6. The method of claim 1 , wherein generating the second node tree comprises parsing and tokenizing the first node tree.

7. The method of claim 1 , wherein one or more functions defined within the compatibility library with functionality equivalent to a command of an individual node of the first node tree are identified by reference to a mapping table.

8. The method of claim 1 , wherein a command of a given node in the first node tree is determined to be functionally equivalent to a given native command or operation of the second query language by reference to a mapping table.

9. The method of claim 1 , wherein a command of a given node in the first node tree is converted to a function defined within the compatibility library, only if all options of the command of the given node in the first node tree are not supported in any native commands or operations of the second query language.

10. A system comprising:

a processor; and

a non-transitory computer-readable medium having stored thereon instructions that, when executed by the processor, cause the processor to:

receive, by a query conversion system, a first query string in a first query language;

generate, by the query conversion system, a first node tree logically representing the first query string, wherein individual nodes of the first node tree correspond to individual commands, in the first query language, specified within the first query string;

generate, by the query conversion system, a second node tree corresponding to a second query language, wherein generating the second node tree comprises determining a conversion of the individual nodes of the first node tree, wherein conversion of each individual node in the first node tree results in a corresponding node in the second node tree that represents:

(i) when functionality equivalent to the command of the individual node in the first node tree is implemented via a native command or operation of the second query language, the native command or operation of the second query language as a converted node; and

(ii) when functionality equivalent to the command of the individual node in the first node tree is not natively implemented via a command in the second query language or by a function defined within a compatibility library, the command of the individual node in the first node tree as a non-converted node;

generate, by the query conversion system, a second query string in the second query language utilizing the second node tree, wherein the second query string comprises at least one native command or operation of the second query language corresponding to a converted node and at least one command in the first query language corresponding to a non-converted node;

execute the second query string to generate search results; and

transmit the search results over a network to a client computing device for display.

11. The system of claim 10 , wherein at least one corresponding node in the second node tree is annotated to note that the at least one corresponding node in the second node tree represents a command in the first query language.

12. The system of claim 10 , wherein the compatibility library is a package associated with the second query language.

13. The system of claim 10 , wherein a given native command or operation of the second query language implements functionality equivalent to a command of a given node in the first node tree only if all options of the command of the given node in the first node tree are supported in the given native command or operation of the second query language.

14. The system of claim 10 , wherein a function defined within the compatibility library implements functionality equivalent to a command of a given node in the first node tree only if all options of the command of the given node in the first node tree are supported in the function defined within the compatibility library.

15. The system of claim 10 , wherein to generate the second node tree, the instructions further cause the processor to parse and tokenize the first node tree.

16. The system of claim 10 , wherein one or more functions defined within the compatibility library with functionality equivalent to a command of an individual node of the first node tree are identified by reference to a mapping table.

17. The system of claim 10 , wherein a command of a given node in the first node tree is determined to be functionally equivalent to a given native command or operation of the second query language by reference to a mapping table.

18. The system of claim 10 , wherein a command of a given node in the first node tree is converted to a function defined within the compatibility library, only if all options of the command of the given node in the first node tree are not supported in any native commands or operations of the second query language.

19. One or more non-transitory computer-readable media having stored thereon instructions that, when executed by a computing system including one or more processors, cause the computing system to:

receive, by a query conversion system, a first query string in a first query language;

generate, by the query conversion system, a first node tree logically representing the first query string, wherein individual nodes of the first node tree correspond to individual commands, in the first query language, specified within the first query string;

generate, by the query conversion system, a second node tree corresponding to a second query language, wherein generating the second node tree comprises determining a conversion of the individual nodes of the first node tree, wherein conversion of each individual node in the first node tree results in a corresponding node in the second node tree that represents:

(i) when functionality equivalent to the command of the individual node in the first node tree is implemented via a native command or operation of the second query language, the native command or operation of the second query language as a converted node; and

(ii) when functionality equivalent to the command of the individual node in the first node tree is not natively implemented via a command in the second query language or by a function defined within a compatibility library, the command of the individual node in the first node tree as a non-converted node;

generate, by the query conversion system, a second query string in the second query language utilizing the second node tree, wherein the second query string comprises at least one native command or operation of the second query language corresponding to a converted node and at least one command in the first query language corresponding to a non-converted node;

execute the second query string to generate search results; and

transmit the search results over a network to a client computing device for display.

20. The one or more non-transitory computer-readable media of claim 19 , wherein the compatibility library is a package associated with the second query language.

Assignments (4)
CHANGE OF NAME Recorded Jul 22, 2025
From: SPLUNK INC.
To: SPLUNK LLC
Reel/Frame 072170/0599 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 22, 2025
From: SPLUNK LLC
To: CISCO TECHNOLOGY, INC.
Reel/Frame 072173/0058 →
CHANGE OF NAME Recorded Jan 6, 2025
From: SPLUNK INC.
To: SPLUNK LLC
Reel/Frame 069826/0065 →
NUNC PRO TUNC ASSIGNMENT Recorded Mar 17, 2023
From: JAMES, ALEXANDER D.; BAMBHAROLIYA, ANKUR DALSUKHBHAI; JAYARAMAN, VENKATASUBRAMANIAN; PETERS, ANDREW JOHN; ZAINULABDEEN, SALIH AMMAR WAJIH
To: SPLUNK INC.
Reel/Frame 063017/0709 →
References Cited (19)
US 7937344B2 · Baum et al. · 2011 [cited by applicant]
US 8112425B2 · Baum et al. · 2012 [cited by applicant]
US 8751529B2 · Zhang et al. · 2014 [cited by applicant]
US 8788525B2 · Neels et al. · 2014 [cited by applicant]
US 9215240B2 · Merza et al. · 2015 [cited by applicant]
US 9286413B1 · Coates et al. · 2016 [cited by applicant]
US 10127258B2 · Lamas et al. · 2018 [cited by applicant]
US 20180181613A1 · Acharya · 2018 [cited by examiner]
US 20190098106A1 · Mungel et al. · 2019 [cited by applicant]
US 20210117412A1 · Tiyyagura · 2021 [cited by examiner]
US 20220358125A1 · Scholak · 2022 [cited by examiner]
CN 101561817A · 2009 [cited by examiner]
KR 20220111020A · 2022 [cited by examiner]
Splunk Enterprise 8.0.0 Overview, available online, retrieved May 20, 2020 from docs.splunk.com. [cited by applicant]
Splunk Cloud 8.0.2004 User Manual, available online, retrieved May 20, 2020 from docs.splunk.com. [cited by applicant]
Splunk Quick Reference Guide, updated 2019, available online at https://www.splunk.com/pdfs/solution-guides/splunk-quick-reference-guide.pdf, retrieved May 20, 2020. [cited by applicant]
Carraso, David, “Exploring Splunk,” published by CITO Research, New York, NY, Apr. 2012. [cited by applicant]
Bitincka, Ledion et al., “Optimizing Data Analysis with a Semi-structured Time Series Database,” self-published, first presented at “Workshop on Managing Systems via Log Analysis and Machine Learning Techniques (SLAML)”… [cited by applicant]
SLAML 10 Reports, Workshop On Managing Systems via Log Analysis and Machine Learning Techniques, ;login: Feb. 2011 Conference Reports. [cited by applicant]