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.
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.