În Prolog, un termen funcțional sau predicat poate fi considerat o structură de date, similară cu o înregistrare în limba Pascal. Un termen care reprezintă o colecție de termeni se numește termen sau structură compusă. Structurile de date compuse în Prolog sunt declarate în secțiunea de domenii. Dacă termenii structurii se referă la același tip de domeniu, atunci acest obiect se numește structură de date cu un singur domeniu. Dacă termenii structurii se referă la diferite tipuri de domenii, atunci o astfel de structură de date se numește structură de date cu mai multe domenii. Utilizarea unei structuri de domeniu simplifică structura predicatului.
Argumentele termenului de date compozit pot fi simple tipuri de date, termeni compuși sau liste.
Un termen compozit sintactic arată exact ca un predicat: termenul are un functor și o listă de argumente închise în paranteze.
Un termen compus poate fi unificat cu o variabilă simplă sau un obiect compus (variabilele pot fi folosite ca parte a structurii interne a termenului). Aceasta înseamnă că un obiect compozit poate fi utilizat pentru a transfera un întreg set de valori ca un singur obiect și apoi se aplică unificarea pentru a le separa.
colector, titlu, autor, editor = simbol
personal_library = carte (titlu, autor, editor, an)
colecție (colecționar, personal_library)
dq1 (colector, titlu, an)
max_year (titlu, autor, an)
% q1 (Y): - colecție (C, carte (T, _, _, Y), scrie (C, '', T, '', Y).
q1 (Y): - nu (dq1 (_, _, Y)), colectare (C, carte (T, _, _, Y), afirma (dq1 (C, TY)), scrie (X, '', T, '', Y), nu, eșuează.
q2: - colectare (_, carte (T, A, _, Y), MAX_YEAR (T1, A1, Y1), Y> Y1, retracție (MAX_YEAR (T1, A1, Y1)), afirmă (MAX_YEAR (T, A , Y)), eșuează.
În acest caz, variabila Y este folosită pentru a unifica partea termenului compus. Dacă scopul este de a specifica în forma:
Prezentarea datelor necesită adesea un număr mare de structuri. În Prolog, aceste structuri ar trebui descrise. Pentru o descriere mai compactă a structurilor de date, Prolog oferă utilizarea descrierilor de domenii alternative.
Exemplul 25: Trebuie să creați o bază de date conținând informații despre cărți și înregistrări audio din biblioteca personală.
persoană, titlu, autor, artist, album, tip = simbol
lucru = carte (titlu, autor); înregistrare (artist, album, tip)
deține (persoană, lucru)
deține (irina, carte ("Folosind Turbo Prolog", "Yin cu Solomon")).
deține (petr, carte ("Arta lui Prolog", "Sterling cu Shapiro")).
deține (anna, carte ("Prolog: o limbă de relații și aplicațiile sale", "John Malpas")).
(Irina, record ("Elton John", "Fair Fair", "popular")).
deține (petr, record ("Benny Goodman", "The King of Swing", "jazz")).
deține (anna record ("Madonna", "Madonna", "popular")).
deține (X, înregistra (_, _, "jazz"))
Visual Prolog vă permite să proiectați termeni compuși multi-nivel. De exemplu, în termenul record ("Elton John", "Ice Fair", "popular"), în locul numelui artistului, puteți folosi o nouă structură care va descrie artistul în detaliu:
termenul va arăta astfel: înregistrare (artă ("Elton", "John"), "Fair Fair", "popular").