La sintaxis básica del OQL de Matisse es una sentencia SELECT de la forma: SELECT... FROM... WHERE...;

Por ejemplo, para recuperar el valor de todos los atributos de los objetos tipo Profesor, escribiríamos la siguiente sentencia OQL:
SELECT * FROM Profesor;
Y para recuperar del atributo nombre de los objetos tipo Profesor cuyo año de ingreso es anterior al 1990, escribiríamos la siguiente sentencia :
SELECT nombre FROM Profesor WHERE ingreso <= 1990;
Las siguientes son algunas consideraciones y ejemplos sobre las consultas con SELECT:
- Toda sentencia
SELECTfinaliza en punto y coma.
Además de la cláusula WHERE, que permite establecer un criterio de selección se pueden utilizar las cláusulas de agrupamiento GROUP BY, y de ordenación ORDER BY, entre otras. También se pueden asignar alias mediante AS, realizar búsquedas por patrones de caracteres con LIKE.
Ejemplo: título y tema de las tesis cuyo tema contien la palabra Objeto, ordenadas por tema.
SELECT titulo AS "Tesis", tema FROM Tesis
WHERE tema LIKE '%Objeto%' ORDER BY tema;
- Al recuperar todos los atributos de una clase mediante
SELECT *, la consulta retornará el OID de cada objeto recuperado, así como las interrelaciones o relaciones definidas para esa clase. El OID y la interrelación son del tipostringy se representan mediante un número hexadecimal. Realmente el identificador recuperado para la interrelación, hace referencia al primer objeto relacionado, incluso aunque la interrelación incluya a más de un objeto.
Se pueden hacer JOIN de clases, y por ejemplo esto puede permitir obtener todos los objetos relacionados con otro objeto en una consulta asociativa.
Ejemplo: nombre de cada profesor y título y tema de las tesis que dirige con JOIN
SELECT p.nombre, t.titulo, t.tema
FROM Profesor p JOIN Tesis t ON t.es_dirigida = p.OID;
Mediante SELECT se pueden realizar consultas navegacionales haciendo referencia a las interrelaciones entre objetos.
Ejemplo: nombre de cada profesor y título y tema de las tesis que dirige, navegacional
SELECT t.titulo AS "Tesis", tema, t.es_dirigida.nombre
AS "Profesor " FROM Tesis t;
- También se pueden realizar consultas navegacionales a través de la referencia de los objetos (
REF()).
Ejemplo: tesis que dirigen los profesores con ingreso el 1990 o posterior
SELECT REF(p.dirige) FROM Profesor p
WHERE p.ingreo >= 1990;