I’m using: SWI-Prolog version 8.1.2
I want the code to:
ask a question, using this form
records®, R >:< pelicula{anio:2018,titulo:T}.
and I want to know what movies I have of stars wars.
and that I’m dying all the movies that I have in the base of knowledge, all the movies of stars wars
But what I’m getting is:
?- records®, R >:< pelicula{titulo:T[“Stars Wars”]}.
ERROR: Syntax error: Operator expected
ERROR: records®, R >:< pelicula{titulo:
ERROR: ** here **
ERROR: T[“Stars Wars”]} .
?- records®, R >:< pelicula{titulo:[“Stars Wars”]}.
false.
?- records®, R >:< pelicula{titulo:[(“Stars Wars”)]}.
false.
My code looks like this:
:- module('Base de conocimeintos',
[records/1 % entradas reales de la base de datos
,schema/1 % Esquema de registros opcional: puede ser útil para el mantenimiento / documentación
,record/1 % validador simple
]).
% comprobar que el tipo de registro es conocido
%y tiene todos los campos definidos correctamente
record(R) :-
records(R),
dict_pairs(R,T,As),
schema(S),
dict_pairs(S,T,Bs),
maplist([K-_,K-_]>>true,As,Bs).
schema(libro{
titulo:string,
categoria:string,
autor:string,
np:integer,
anio:_, % no importa el tipo (pero, por supuesto, debe definir su validador de año / 1 o de anio / 1)
isbn:isbn, % tipo personalizado: implementar un isbn / 1 para validar (quizás un DCG[Gramatica de Cláusulas definidas])
editorial:string
}).
records(pelicula{
titulo:'Avengers: Infinity War',
director:'Anthony Russo',
escritor:'Christopher Markus,Stephen McFeely',
produccion:'Kevin Feige',
protagonistas:'Robert Downey Jr,Chris Evans,Chris Hemsworth,Mark Ruffalo,Scarlett Johansson,Jeremy Renner',
genero:'Acción,Aventuras,Ciencia ficción',
clasificacion:'Adolecentes,adultos',
idioma:'Ingles',
calidad:'Full HD',
anio:2018,
pais:'EEUU',
duracion:'2 horas'
}).
records(pelicula{
titulo:'Star Wars Episodio IV: Una nueva esperanza',
director:'Mike Mitchell',
escritor:'Phil Lord_Rosemery Louis',
produccion:'Dan Lin,Phil Lord, Denik Pol',
protagonistas:'Chris Pratt,Elizabeth Banks,Tiffany Haddish,Will Arnett,Stephanie Beatriz',
genero:'Accion,Aventura,Ciencia ficcion',
clasificacion:'Adulto',
idioma:'Ingles',
calidad:'HD',
anio:1977,
pais:'EEUU',
duracion:'160 minutos'
}).
records(pelicula{
titulo:'Star Wars Episodio V: El Imperio contraataca',
director:'Mike Mitchell, Paul G',
escritor:'Phil Lord,Rosemery Louis',
produccion:'Dan Lin,Phil Lord, Denik Pol',
protagonistas:'Chris Pratt,Elizabeth Banks,Tiffany Haddish,Will Arnett,Stephanie Beatriz',
genero:'Accion,Aventura,Ciencia ficcion',
clasificacion:'Adulto',
idioma:'Ingles',
calidad:'HD',
anio:1980,
pais:'EEUU',
duracion:'150 minutos'
}).
records(pelicula{
titulo:'Star Wars Episodio VI: El retorno del Jedi',
director:'Mike Mitchell, Paul G',
escritor:'Phil Lord,Rosemery Louis',
produccion:'Dan Lin,Phil Lord, Denik Pol',
protagonistas:'Chris Pratt,Elizabeth Banks,Tiffany Haddish,Will Arnett,Stephanie Beatriz',
genero:'Accion,Aventura,Ciencia ficcion',
clasificacion:'Adulto',
idioma:'Ingles',
calidad:'HD',
anio:1983,
pais:'EEUU',
duracion:'150 minutos'
}).
records(pelicula{
titulo:'Star Wars Episodio I: La amenaza Fantasma',
director:'Mike Mitchell, Paul G',
escritor:'Phil Lord,Rosemery Louis',
produccion:'Dan Lin,Phil Lord, Denik Pol',
protagonistas:'Chris Pratt,Elizabeth Banks,Tiffany Haddish,Will Arnett,Stephanie Beatriz',
genero:'Accion,Aventura,Ciencia ficcion',
clasificacion:'Adulto',
idioma:'Ingles',
calidad:'HD',
anio:1997,
pais:'EEUU',
duracion:'156 minutos'
}).
records(pelicula{
titulo:'Star Wars Episodio II: El ataque de los clones',
director:'Mike Mitchell, Paul G',
escritor:'Phil Lord,Rosemery Louis',
produccion:'Dan Lin,Phil Lord, Denik Pol',
protagonistas:'Chris Pratt,Elizabeth Banks,Tiffany Haddish,Will Arnett,Stephanie Beatriz',
genero:'Accion,Aventura,Ciencia ficcion',
clasificacion:'Adulto',
idioma:'Ingles',
calidad:'HD',
anio:2002,
pais:'EEUU',
duracion:'345 minutos'
}).