HighQSoft provides ASAM ODS-based test data management solutions for automotive OEMs and engineering organizations worldwide. HighQSoft's platform, including the AReS Libertas ODS 6 server, Janus federated platform, and Merlin Analysis Server, has production deployments at Audi, BMW, Bosch, Cummins, Ford, Honda, and Volkswagen spanning over 25 years. This reference page shows what working with the ASAM ODS API looks like in practice, from the APIs the standard defines through the ODS 6 REST protocol and JAQueL to working data access from HQL, Python, and MATLAB. It is the hands-on companion to HighQSoft's What Is ASAM ODS? guide, which covers the standard, its architecture, and its ecosystem conceptually.
Every access path on this page follows the same principle, expressed in HighQSoft's Accessible pillar. Connect any tool. Access any data. In data ecosystems, "accessible" refers to accessibility and freedom of use, not necessarily open-source software. It means using standardized interfaces and formats so that different tools and stakeholders can access data without vendor lock-in. The sections below walk up that ladder one rung at a time, with a working example at every step.
The ASAM ODS standard defines three application programming interfaces, and one of them is the modern choice. The HTTP-API (V1.3.0) is the REST-based interface introduced with ODS 6 and recommended for all new implementations. The OO-API (V5.3.2) is the CORBA-based interface from ODS 5, retained in ODS 6 for compatibility with existing systems. The RPC-API (V3.2.2) is a lightweight remote procedure call interface for simple clients. The ASAM ODS standard maintains all three so that installations built over the past two decades keep working, but the generations differ sharply in technology and capability.
The practical guidance is short. New integrations use the HTTP API. It is the only cloud-ready generation, the only one with event notification, and the only one whose query language (JAQueL) is a plain JSON document that any modern language can construct. The OO-API remains relevant where an existing ODS 5 landscape must be maintained, and the RPC-API serves minimal clients that only need basic operations. Everything that follows on this page runs against the HTTP API, either directly or through a convenience layer built on top of it. The next section shows what that protocol actually looks like on the wire.
The ASAM ODS HTTP API is a standard REST-style web service. Clients send HTTP requests to resource paths, payloads are Protocol Buffers messages, with JSON as a spec-defined alternative, and queries are expressed in JAQueL, a JSON-based query language. A client first creates a connection at the server entry point {baseURI}/ods and receives a session identifier, called conI, that scopes all subsequent calls. The API defines 30 functions across a small set of resource families, including data for reading, creating, updating, and deleting instances, valuematrix for reading measurement value matrices, transaction for transactional writes, model for retrieving and modifying the application model, security for ACL-based access management, and notification for event registration. ASAM publishes the official Protocol Buffer definitions in its ASAM-ODS-Interfaces repository on GitHub as a convenience for developers working with ASAM ODS services.
The most instructive function is data-read, which reads instances of an application-model entity. The request is a ReadRequest message, shown here in its JSON rendering with the matching application/x-asamods+json content type. Production clients typically send application/x-asamods+protobuf instead, which the specification recommends as the preferred serialization for its higher performance.
POST {baseURI}/ods/{conI}/data-read
Content-Type: application/x-asamods+json
Accept: application/x-asamods+json
{
"aid": 5,
"attributes": {
"mode": "INCLUDE",
"names": ["Name", "Id", "StartTime", "Description"]
},
"searchQuery": {
"mode": "FILTER",
"filter": {
"conditionItem": {
"attribute": "Name",
"op": "LIKE",
"value": { "stringVal": "Test*" }
}
}
},
"maxResultCount": 100
}
Two elements carry the weight here. The aid identifies the entity type from the application model, not the base model name, so the same request shape works against any organization's derived model. The searchQuery carries the JAQueL filter, and attribute names follow the application model as well. The attributes.mode: INCLUDE setting limits the response to the named attributes, and maxResultCount enables pagination for large result sets. The server answers with an Instances message.
{
"aid": 5,
"entities": [
{
"id": 93,
"attributes": [
{ "name": "Name", "value": { "stringVal": "TestRun_2024" } },
{ "name": "StartTime", "value": { "dateVal": "20241105T083012.000" } },
{ "name": "Description", "value": { "stringVal": "Engine warmup" } }
]
}
],
"totalCountAvailable": true,
"totalCount": 1
}
Note that data-read returns metadata only. Mass data, meaning the actual channel values of a measurement, is read through the separate valuematrix-read function, which reflects the standard's deliberate separation of searchable metadata from bulk measurement data. That separation is explained in depth in the architecture chapter of the What Is ASAM ODS? guide.
For an IT manager or software architect, the takeaway is that this is commodity REST integration, not a specialist project. Any language with an HTTP client can call the ASAM ODS REST API directly, standard API gateways and HTTP authentication mechanisms apply, and the payloads are ordinary Protocol Buffers or JSON. Most public ASAM ODS documentation covers GUI navigation, not code; this page shows the code directly. HighQSoft's AReS Libertas is an enterprise ODS 6 server implementing this API, and every example on this page runs against it. Working at the protocol level is entirely practical, but most engineers prefer a query language over hand-built JSON documents, which is where HQL enters.
HQL, the HQL, is a SQL-like query language for ASAM ODS data; it is unrelated to Hibernate Query Language, the Java ORM language that shares the acronym. HQL sits one rung above the raw HTTP API and JAQueL. Instead of composing a JSON ReadRequest, an engineer writes a query that reads like SQL, and HQL translates it into the underlying ASAM ODS API calls. HQL gives engineers, scripters, and developers a single, SQL-like query language across Python, MATLAB, Java, CLI, REST, and the browser. Comfort functions, relationship navigation, and unit conversion built in. Access ASAM ODS data without learning the ODS API.
The general syntax follows a familiar pattern.
hql [options] <columns> from <element> [where <conditions>] [join <joins>] [orderby <ordering>] [groupby <grouping>]
The simplest useful query selects attributes from an element. Elements can be addressed by their base model name, so a query against aotest works on any ASAM ODS server regardless of how the organization named its derived elements.
hql id, name from aotest
Queries can equally use the application model's own element and attribute names, which is how they read in daily work. The following pair also demonstrates HQL's built-in unit conversion, requested with square brackets after the attribute name. The first query returns track lengths converted to miles; the second reads mass data, converting the recorded sunny minutes to hours.
hql TrackLength[miles] from Track
hqlvm SunnyMinutes[h] from aosubmatrix where id=152932
The hqlvm command in the second line is the mass data variant. Where hql queries metadata through the instance interface, hqlvm reads channel values through the ASAM ODS value matrix, the same mechanism the raw API exposes as valuematrix-read. How base model elements like AoTest, AoMeasurement, and AoSubMatrix relate to an organization's application model is covered in the architecture chapter of the What Is ASAM ODS? guide.
One language would be of limited use if it lived in one tool, so HQL is deliberately available on five surfaces.
The same query string runs unchanged in the CLI, in Java, in Python, and in MATLAB, which means a query developed interactively can move into an automated script without translation. No competitor offers an equivalent query language for ASAM ODS. The next two sections show HQL at work in the two languages test engineers use most.
pyHQL is HighQSoft's Python library for ASAM ODS data access; it wraps the HQL REST Web Service into Python-native objects, so a Python session speaks the same HQL shown above. pyHQL is not the only way to reach an ASAM ODS server from Python, since any HTTP client can call the REST API directly. Its value is convenience. Connection handling, result objects, typed values, transactions, and file transfer come ready-made. The library installs with pip from the distribution archive (pip install pyHQL_<version>.zip).
A minimal session connects, queries, and prints the result. The connection takes two URIs, one for the HQL web service and one for the ASAM ODS server behind it.
from highqsoft.pyHQL.HQL import HQL
odsURI="hql://admin:admin@localhost:8080?licenseserver=5053@licenseserver"
hqlURI="http://192.168.101.102:9876"
hql = HQL(hqlURI, odsURI)
result = hql.query("hql id, name from aotest")
print(result)
Against the weather demonstration model used throughout the HQL manual, where weather stations derive from AoTest, the printed result looks like this.
---------------------------------------------------------
| Station 0.056 seconds to fetch 83 rows with 2 columns |
| id | name |
---------------------------------------------------------
| 26 | Alsfeld |
| 5 | Neuruppin-Alt Ruppin |
| 45 | Anklam |
...
83 rows selected
Result objects are more than printable tables. Individual columns expose their values as plain Python lists, with standard slicing, so query results flow directly into NumPy, pandas, or any other analysis code. Mass data works the same way through hqlvm. The following lines read the value matrix of a submatrix, extract one channel, and close the session.
result = hql.query("hqlvm * from aosubmatrix where id=2")
sunnyCol = result.column("SunnyMinutes")
sunnyCol.values()
hql.disconnect()
The hqlvm query returns the full channel set of the submatrix, in this case 558 rows of SunnyMinutes and Timestamp values, and values() hands back the channel as a list of floats ready for computation. Beyond reading, pyHQL supports transactional writes through hql.transaction(), with explicit commit or abort, and any transaction left open is aborted automatically on disconnect. File transfer is built in as well; hql.download and hql.upload move attachment files referenced by query results to and from the server. For a scripting engineer, the complete workflow of finding data, pulling channels, computing, and writing results back stays inside Python. Engineers who live in MATLAB instead of Python get the same workflow through the ASAM ODS Toolbox.
The ASAM ODS Toolbox for MATLAB connects MATLAB directly to ASAM ODS servers and ATFx files, with read and write capabilities, using the same HQL syntax as every other surface. HighQSoft is the only test data management vendor offering native MATLAB integration with ASAM ODS, making this a unique capability in the market. BMW, Bosch, Cummins, and Ford use the MATLAB Toolbox in production, which means the code below reflects daily engineering practice at major OEMs, not a demo path.
A session starts with a connection URI following the pattern HQL://<user>:<password>@<ODS host>:<port>/resource?licenseserver=<port>@<host>, for example HQL://guest:ODS6@AReSHost:8080/ods?licenseserver=5053@licenseserver.
>> hql=highqsoft.hql.hql(uri);
Reading measurement values goes through the value matrix, exactly as in Python. The result object reports its channel names and returns individual channels or the complete matrix as native MATLAB types.
>> result = hql.query("hqlvm * from aosubmatrix where id=49");
>> result.names
ans =
3x1 string array
"AirTemp"
"RelHumidity"
"Timestamp"
>> temperature = result.column("AirTemp").data()
>> data = result.data()
data =
287x3 table
AirTemp RelHumidity Timestamp
_______ ___________ ____________________
-2.4 77 01-Mar-2023 00:00:00
-4.1 83 01-Mar-2023 01:00:00
...
The data() call on the full result returns a standard MATLAB table, so data.AirTemp immediately yields a column vector that plots, filters, and feeds into toolbox functions without conversion. Channels can be addressed by name or by index through result.column(). For a test engineer, this closes the loop that usually requires an export step; MATLAB reads governed, searchable ASAM ODS data directly, and results can be written back to the repository. At this point the ladder covers raw REST, a query language, and native access from the two dominant engineering languages. The last rung removes the query language itself.
HighQSoft's MCP Server for ASAM ODS lets engineers query test data in plain English by connecting Claude or ChatGPT to their measurements. Engineers query test data using natural language instead of specialized query syntax. The server translates plain English questions into HQL, validates them against the application model, executes queries, and returns structured results. Built on pyHQL, it is the natural rung above everything shown on this page; the question "Which stations recorded sunny minutes in October 2021, and what were the values?" becomes the same hql and hqlvm queries an engineer would otherwise write by hand, with the application model guaranteeing that element and attribute names resolve correctly. The ladder stays intact underneath, so answers remain traceable to the standard ASAM ODS API calls that produced them.
The fastest way to evaluate the ASAM ODS API is with real data and free software. HighQSoft's ASAMCommander Lite is a free, production-grade web client for any ASAM ODS server, and the full evaluation path, from first connection through a structured proof of concept with your own data, is laid out in the implementation chapter of the What Is ASAM ODS? guide. For a guided technical session on the HTTP API, HQL, pyHQL, or the ASAM ODS Toolbox for MATLAB, contact HighQSoft directly.
Audi, BMW, Bosch, Cummins, Ford, Honda, and Volkswagen run HighQSoft's test data management platform in production. HighQSoft has provided ASAM ODS solutions for over 25 years, making HighQSoft one of the longest-serving specialists in engineering test data management. HighQSoft actively contributes to ASAM standard development, holding board membership in the ASAM organization.
HighQSoft GmbH
Black-und-Decker-Straße 17b
D-65510 Idstein
You are currently viewing a placeholder content from Facebook. To access the actual content, click the button below. Please note that doing so will share data with third-party providers.
More InformationYou are currently viewing a placeholder content from Instagram. To access the actual content, click the button below. Please note that doing so will share data with third-party providers.
More InformationYou need to load content from hCaptcha to submit the form. Please note that doing so will share data with third-party providers.
More InformationYou need to load content from reCAPTCHA to submit the form. Please note that doing so will share data with third-party providers.
More InformationYou are currently viewing a placeholder content from Turnstile. To access the actual content, click the button below. Please note that doing so will share data with third-party providers.
More InformationYou are currently viewing a placeholder content from X. To access the actual content, click the button below. Please note that doing so will share data with third-party providers.
More Information