Tolog

Introducción


Tolog es un lenguaje de consulta basado en la lógica, lo que significa que la operación básica es que el usuario pregunte a tolog en qué casos una determinada aserción es verdadera, y tolog responderá con todos los conjuntos de valores que hacen que la aserción sea verdadera. Las afirmaciones en tolog consisten en predicados, que son relaciones entre conjuntos de valores. Un predicado puede considerarse como una tabla de todos los conjuntos de valores que lo hacen verdadero, y la consulta se realiza comparando la consulta con la tabla, devolviendo todos los conjuntos de valores que coincidan.

Predicados y variables


Un predicado tolog es el conocido como instance-of, que se utiliza para consultar la relación de tipo topic instance-topic. Una consulta que utilice este predicado podría ser:

instance-of($TOPIC, $TYPE)?

En esta consulta sólo hay un predicado, y tiene variables que se pasan como sus dos parámetros. Esto significa que queremos todas las combinaciones de valores de estas variables que hacen que la afirmación sea verdadera. Es decir, queremos todas las combinaciones de (tema, tipo de tema) que se encuentran en el mapa de temas. Si ejecutamos esta consulta en opera.ltm podríamos obtener un resultado como el siguiente.

TOPIC TYPE
RAI organization
RAI TV company
Teatro Nuovo organization
Casinò di San Remo organization
Imperial Opera organization
Teatro La Pariola organization
... ...


Esto muestra todos los temas que tienen un tipo, y para cada tema, todos sus tipos (por eso RAI aparece dos veces; es una instancia de dos tipos). La tabla de resultados tiene varios cientos de líneas. Supongamos que queremos encontrar todos los casos del tipo teatro. Recordemos que la consulta anterior era la siguiente:

instance-of($TOPIC, $TYPE)?

Esto nos dio todas las combinaciones (tema, tipo) porque teníamos variables como ambos parámetros. En este caso no queremos todos los tipos posibles, sólo queremos el tema, así que sustituimos la variable por ese tipo concreto. Esto nos da la siguiente consulta:

instance-of($TOPIC, theatre)?

Ahora estamos preguntando por todos los valores de TOPIC que harían que lo anterior fuera cierto; es decir, estamos preguntando por todas las instancias de teatro.

TOPIC
Teatro Massimo
Teatro Bellini
Teatro San Carlo
Teatro La Pariola
Académie Royale de Musique
Teatro Pagliano
...


Del mismo modo, si queremos conocer todos los tipos de los que un topic es una instancia, podemos sustituir la variable TOPIC por una referencia a un topic, y poner una variable como segundo parámetro, como se muestra a continuación.

instance-of(teatro-massimo, $TYPE)?

Al ejecutar esta consulta, se obtienen los siguientes resultados:

TYPE
Theatre
Organization


Obtenemos «Theatre», como era de esperar, pero también «Organization», lo que puede resultar sorprendente. En el mapa temático, el único tipo que aparece para el Teatro Massimo es el teatro, así que ¿qué hace aquí la organización? La respuesta es que la organización se define como un supertipo de teatro en el mapa temático. Esto significa que cualquier instancia de teatro es también una instancia de organización. tolog lo sabe y utiliza la información para hacer del Teatro Massimo una instancia de ambos tipos.

¿Estás interesado en los siguientes lenguajes de recuperación? Haz click: