Model Property Service Query Language Reference
The indexing service is implemented using JSON table scans. Property data from the models specified in the index manifest are extracted and stored as compressed line delimited JSON by the service. Each row in the file represents a row extracted from the underlying SVF PDB (Property Database) files created as part of the SVF file conversions process. When queries are issued to the indexing service, the workflow takes the JSON query expression passed by the client, translates it to SQL-like expression, and applies it line-by-line to each row in the index (table scan). Where rows match the expression, they are written to a cached, compressed, results JSON file, honoring any column restrictions that were passed with the query filter expression.
Basic Query Body Structure
> Whether a query targets a basic index or the more complex diff index, the format of the query body passed to the service remains constant.
There is a columns property that allows the columns, or projections, returned by the service to be restricted. If this property is null, this is equivalent to a SELECT * in SQL terms. The second property, query carries the query filter expression applied to the each row in the index and is equivalent to a WHERE clause in SQL.
<columns>
The following column specification
is equivalent to the following SQL expression
and would yield a result with the following JSON schema.
<conditions>
The query property consists of a set of conditions that can be combined with AND and OR semantics. The following table summarizes the various conditions supported by the service. Conditions can contain embedded expressions.
<expression>
The following <expression> are supported by the service:
String Escaping
SQL string constants have to be single quoted, i.e. "'Hello'" is the constant 'Hello'. Unquoted strings either denote properties (e.g. "s.p123") or keywords (e.g. "LEADING").
Query by Example
Get Revit Classification with Column Transform
See the following fields.
This example query uses the $and expression, combined with $notnull and a $gt, to filter rows where the views array has a $count greater than 0 and the row has a Revit classification.
This is equivalent to the following S3 SQL:
Fuzzy string matching with a dimension constraint
See the following fields.
This example query uses the $like expression combined with % wildcard matching to find rows with a structural material description containing “steel” that has a Ht dimension of more than 0.5 feet.
This is equivalent to the following S3 SQL:
Find more examples and sample applications on APS Github

Sample models, an extensive set of examples queries and set of PowerShell helper scripts which can be used to test the API are available on APS Github https://github.com/autodesk-platform-services/aps-model-properties.powershell
Imported from the Autodesk Platform Services documentation: https://aps.autodesk.com/en/docs/acc/v1/tutorials/model-properties/query-ref.