Expressive grouping for language integrated queries
AssigneeMicrosoft Corporation
InventorsPaul A. Vick, Henricus Johannes Maria Meijer
Life of this patent
Estimating the term…
Abstract
Standard group operators afford expressive grouping across collections of various types for employment by a number of programming languages. The operators can leverage positional information to facilitate grouping of sequential/ordered input data. Groups can also include more than one input element. Additionally or alternatively, the operators can enable multi-level grouping such as nested or hierarchical grouping. In accordance with one aspect, the group operators can be employed in conjunction with language-integrated queries.
Claims20
A computer system, comprising at least one processor coupled to at least one computer-readable storage medium storing instructions executable by the at least one processor to implement:
- an application component including computer executable functionality;
- a group component configured to facilitate execution of each of a positional, multi-member, and multi-level group operator specified by the application component, positional group operators being operators for which position within an ordering of one or more elements affects results of the operators, multi-member operators being operators that can cause a specific element to concurrently occupy a plurality of groups, multi-level group operators being operators that can cause a first group to be nested within a second group;
- and
- an injector component configured to identify a reference to a group operator in the group component, fetch functionality corresponding to the identified group operator from the group component and inject the functionality into the application component to produce new executable grouping functionality, the injector component being configured to identify, fetch, and inject when the application component is encoded in any of a plurality of program languages.
A data interaction method, comprising:
- obtaining at least a portion of a computer program expressed in a query comprehension syntax;
- identifying a plurality of references to a plurality of query group operators in the portion of the computer program, the plurality of query group operators including a positional group operator, a multi-member group operator, and a multi-level group operator, positional group operators being operators for which position within an ordering of one or more elements affects results of the operators, multi-member operators being operators that can cause a specific element to be concurrently included in a plurality of groups, multi-level group operators being operators that can cause a first group to be nested within a second group;
- mapping the identified plurality of query group operators to one or more standard group operators;
- and
- inserting the one or more standard group operators into the referencing computer program to enable grouping of ordered data as part of a data query operation,
- wherein the computer program is encoded in any of a plurality of program languages.
A computer-readable storage medium storing instructions that, if executed by a computing device, cause the computing device to perform operations comprising:
- scanning a computer program coded in any one of a plurality of programming languages;
- based on the scanning, identifying grouping functionality for grouping sequences of data independent of the programming language;
- and
- injecting the grouping functionality into the computer program to facilitate sequence-based grouping in conjunction with a language-integrated query, the grouping functionality including a positional group operator, a multi-member group operator, and a multi-level group operator, positional group operators being operators for which position within an ordering of one or more elements affects results of the operators, multi-member operators being operators that can cause a specific element to be concurrently included in a plurality of groups, multi-level group operators being operators that can cause a first group and a second group to be grouped within a third group while preserving the separateness of the first group and the second group.
Dependencies are inferred from the claim text.