A method comprising: a database server receiving (110, 210) a query expression to evaluate against a collection of semi-structured data stored in one or more tables of a database, wherein the query expression includes a semi-structured data operator; wherein the semi-structured data operator includes an identification of the operator and a plurality of parameters, wherein a first parameter of the plurality of parameters specifies a semi-structured data format from a plurality of available semi-structured data formats, and a second parameter of the plurality of parameters specifies a semi-structured query language expression; in response to receiving the query expression, performing: generating a first execution plan for the query expression, wherein generating the first execution plan includes: based on the semi-structured data format specified by the first parameter, the database server selecting a semi-structured data format-specific implementation module; the implementation module receiving, at a compiler interface, the semi-structured query language expression, and compiling the semi-structured query language expression to generate a second execution plan for the semi-structured query language expression; storing the generated second execution plan as part of the first execution plan; executing the first execution plan, including evaluating, according to the second execution plan, the semi-structured query language expression specified by the second parameter against the collection of semi-structured data, which is stored in the one or more tables of the database in the semi-structured data format specified by the first parameter; wherein the method is performed by one or more computing devices. a database server receiving (110, 210) a query expression to evaluate against a collection of semi-structured data stored in one or more tables of a database, wherein the query expression includes a semi-structured data operator; wherein the semi-structured data operator includes an identification of the operator and a plurality of parameters, wherein a first parameter of the plurality of parameters specifies a semi-structured data format from a plurality of available semi-structured data formats, and a second parameter of the plurality of parameters specifies a semi-structured query language expression; in response to receiving the query expression, performing: generating a first execution plan for the query expression, wherein generating the first execution plan includes: based on the semi-structured data format specified by the first parameter, the database server selecting a semi-structured data format-specific implementation module; the implementation module receiving, at a compiler interface, the semi-structured query language expression, and compiling the semi-structured query language expression to generate a second execution plan for the semi-structured query language expression; storing the generated second execution plan as part of the first execution plan; executing the first execution plan, including evaluating, according to the second execution plan, the semi-structured query language expression specified by the second parameter against the collection of semi-structured data, which is stored in the one or more tables of the database in the semi-structured data format specified by the first parameter; generating a first execution plan for the query expression, wherein generating the first execution plan includes: based on the semi-structured data format specified by the first parameter, the database server selecting a semi-structured data format-specific implementation module; the implementation module receiving, at a compiler interface, the semi-structured query language expression, and compiling the semi-structured query language expression to generate a second execution plan for the semi-structured query language expression; storing the generated second execution plan as part of the first execution plan; based on the semi-structured data format specified by the first parameter, the database server selecting a semi-structured data format-specific implementation module; the implementation module receiving, at a compiler interface, the semi-structured query language expression, and compiling the semi-structured query language expression to generate a second execution plan for the semi-structured query language expression; storing the generated second execution plan as part of the first execution plan; executing the first execution plan, including evaluating, according to the second execution plan, the semi-structured query language expression specified by the second parameter against the collection of semi-structured data, which is stored in the one or more tables of the database in the semi-structured data format specified by the first parameter; wherein the method is performed by one or more computing devices.