Usuario:


Ejemplo: Faraones de las 18 y 19 Dinastía Egipcias

Storyboard

Las dinastías egipcias representan un interesante caso para desarrollar usando prolog. Esto porque existían distintas relaciones intra-familiares que finalmente no solo llevaban a faraones con enfermedades genéticas si no que también a la desaparición de la respectiva dinastía. De hecho la historia egipcia como imperio independiente se inicia en el año 3000 BC y termina en 525 BC contando con 26 distintas dinastías.

En este caso se estudian las 18 (1550-1295 BC) y 19 (1295-1186 BC) ava dinastías y en particular el cambio de una dinastía a la próxima.

Los datos fueron armados de información en wikipedia y estan redactados como código swi-prolog en egypt-18-19-dynasty.dat. Se incluyen las consultas incluidas en este ejemplo.

>Modelo

ID:(626, 0)



18 ava Dinastía

Imagen

>Top


La 18 ava dinastía egipcia domino Egipto entre los años 1550 y 1295 antes de Cristo, incluía a faraones como Ahmose I y Amenhotep IV/Akhenaten y se muestra en la imagen a continuación:


18 ava dinastía

ID:(295, 0)



19 ava dinastia

Imagen

>Top


La 19 ava dinastía egipcia domino Egipto entre los años 1295 y 1186 antes de Cristo, incluía a faraones como Seti I y Ramsses I y se muestra en la imagen a continuación:


19 ava dinastía

ID:(1005, 0)



Personas como Elementos (Atomos)

Descripción

>Top


En este caso las personas constituyen los elementos en torono de los cuales se asocian propiedades y se interrelacionan entre si. En este caso se tienen 164 personas que se indican a continuación:

A

Aaheperkare, Aakheperure, Ahhotep I, Ahhotep II, Ahmose, Ahmose I, Ahmose Inhapi, Ahmose Pen-Nekhebet, Ahmose-Ankh, Ahmose-Henuttamehu, Ahmose-Meritamon, Ahmose-Meritamun, Ahmose-Nefertari, Ahmose-Sitamun, Ahmose-Sitkamose, Akhenaten, Akheperkare, Akheperure, Amenemhat, Amenemopet, Amenhotep, Amenhotep I, Amenhotep II, Amenhotep III, Amenhotep IV/Akhenaten, Amenia, Amenmesse, Amenmose, Amun-her-khepeshef, Amun-her-khepsef, Ankhesenamun, Ankhesenpaaten Tasherit, Ankhkheperure, Ay

B

Baenre Merynetjeru, Baketmut, Beketamun, Beketaten, Bintanath

D

Daughter of Artatama I of Mitanni, Daughter of Burna-Buriash II, King of Babylon, Daughter of Kadashman-Enlil of Babylon, Daughter of Kurigalzu I of Babylon, Daughter of Satiya, ruler of Enisasi, Daughter of Tarhundaradu of Arzawa, Daughter of the ruler of Ammia, Djeserkare, Djeserkheperure-Setepenre

G

Gilukhipa

H

Hatshepsut, Hatshepsut-Merytre, Hattusili III, Henutmire, Henuttaneb, Henuttawy, Horemheb

I

Iaret, Ipu, Iset, Isetnofret, Isetnofret II

J

Juni

K

Kamose, Khaemwaset, Kheperkheperure, Kiya

M

Maathorneferure, Maatkare, Meketaten, Menhet, Menkheper(en)re, Menkheperre, Menkheperure, Menmaatre, Menmire-Setepenre, Menpehtire, Menwi, Merenptah, Meritamen, Meritaten, Meritaten Tasherit, Merneptah, Merti, Meryatum, Meryetamun, Meryre, Merytamun C, Merytamun D, Merytre-Hatshepsut, Mutemwiya, Mutnedjmet, Mutnofret

N

Nebetah, Nebetiunet, Nebetnehat, Nebettawy, Nebkheperure, Nebmaatre, Nebpehtire, Nebsemi, Nebtu, Nedjem, Neferkepherure-Waenre, Neferneferuaten, Neferneferuaten Tasherit, Neferneferure, Nefertari, Nefertiri, Nefertiti, Neferubity, Neferure, Nefrubity

P

Pareherwenemef, Petepihu, Puduhepa

R

Raia, Ramesses, Ramesses I, Ramesses II, Ramose, Ruia

S

Satiah, Sekhaienre Meryamun/Akhenre Setepenre, Senseneb, Seqenenre Tao, Setepenre, Seti, Seti I, Seti II, Seti-Merenptah, Shuttarna II, Siamun, Siatum, Siptah, Sitamun, Sitre, Sitre Meritamun, Smenkhkare, Smenkhkarev, Sutailja

T

Tadukhipa, Takhat, Tao, Tentamun, Tey, The Younger Lady, Thutmose, Thutmose I, Thutmose II, Thutmose III, Thutmose IV, Tia, Tiaa, Tiye, Tushratta, Tutankhamun, Tuthmosis II, Tuthmosis III, Tuya, Twosret

U

Userkheperure, Usermaatre Setepenre

W

Wadjmose, Webensenu

ID:(1002, 0)



Característica propia de las Personas

Descripción

>Top


En el caso de la genealogía egipcia existen solo algunos datos certeros, o sea para los que existen registros históricos. Uno de ellos es el hecho que una persona haya sido un faraón.

Para la 18 y 9 ava dinastías estos son, donde "faraón" es una "característica" del "elemento" que corresponde al nombre de la persona:

```

% pharao (name)

pharao("Ahmose I").

pharao("Amenhotep I").

pharao("Amenhotep II").

pharao("Amenhotep III").

pharao("Amenhotep IV/Akhenaten").

pharao("Amenmesse").

pharao("Ay").

pharao("Hatshepsut").

pharao("Horemheb").

pharao("Merneptah").

pharao("Neferneferuaten").

pharao("Ramesses I").

pharao("Ramesses II").

pharao("Seti I").

pharao("Seti II").

pharao("Siptah").

pharao("Smenkhkare").

pharao("Thutmose I").

pharao("Thutmose II").

pharao("Thutmose III").

pharao("Thutmose IV").

pharao("Tutankhamun").

pharao("Twosret").

```

En este caso no tiene mucho sentido definir roles como hombres o mujeres ya que en muchos casos se desconoce el sexo de la persona. Por un lado hubieron algunos faraones que fueron mujeres fuera de que la información de hijos muchas veces solo proviene de textos y no siempre indicando que sexo tenia.

ID:(1003, 0)



Característica asociadas a las Personas

Descripción

>Top


Fuera de caracteristicas propias de las personas, pueden haber datos que se asocian como por ejemplo

- la dinastia a que pertenecia

- el trono bajo el que reino

- el año en que se inicio el reino

- el año en que finalizo el reino

- el año en que nacio

- el año en que murio

En este ejemplo dichos datos se listan a continuación (los años se indican con números negativos por ser antes de Cristo):

La dinastia:

```

% dynasty (name,number)

dynasty("Ahmose I",18).

dynasty("Amenhotep I",18).

dynasty("Amenhotep II",18).

dynasty("Amenhotep III",18).

dynasty("Amenhotep IV/Akhenaten",18).

dynasty("Amenmesse",19).

dynasty("Ay",18).

dynasty("Hatshepsut",18).

dynasty("Horemheb",18).

dynasty("Merneptah",19).

dynasty("Neferneferuaten",18).

dynasty("Ramesses I",19).

dynasty("Ramesses II",19).

dynasty("Seti I",19).

dynasty("Seti II",19).

dynasty("Siptah",19).

dynasty("Smenkhkare",18).

dynasty("Thutmose I",18).

dynasty("Thutmose II",18).

dynasty("Thutmose III",18).

dynasty("Thutmose IV",18).

dynasty("Tutankhamun",18).

dynasty("Twosret",19).

```

El trono:

```

% throne (pharao,name)

throne("Ahmose I","Nebpehtire").

throne("Amenhotep I","Djeserkare").

throne("Amenhotep II","Akheperure").

throne("Amenhotep III","Nebmaatre").

throne("Amenhotep IV/Akhenaten","Neferkepherure-Waenre").

throne("Amenmesse","Menmire-Setepenre").

throne("Ay","Kheperkheperure").

throne("Hatshepsut","Maatkare").

throne("Horemheb","Djeserkheperure-Setepenre").

throne("Merneptah","Baenre Merynetjeru").

throne("Neferneferuaten","Ankhkheperure").

throne("Ramesses I","Menpehtire").

throne("Ramesses II","Usermaatre Setepenre").

throne("Seti I","Menmaatre").

throne("Seti II","Userkheperure").

throne("Siptah","Sekhaienre Meryamun/Akhenre Setepenre").

throne("Smenkhkare","Ankhkheperure").

throne("Thutmose I","Akheperkare").

throne("Thutmose II","Akheperkare").

throne("Thutmose III","Menkheper(en)re").

throne("Thutmose IV","Menkheperure").

throne("Tutankhamun","Nebkheperure").

throne("Twosret","Sitre Meritamun").

```

Año de inicio del reinado:

```

% reign_start (name,year)

reign_start("Ahmose I",-1539).

reign_start("Amenhotep I",-1526).

reign_start("Amenhotep II",-1425).

reign_start("Amenhotep III",-1388).

reign_start("Amenhotep IV/Akhenaten",-1351).

reign_start("Amenmesse",-1201).

reign_start("Ay",-1323).

reign_start("Hatshepsut",-1479).

reign_start("Horemheb",-1319).

reign_start("Merneptah",-1213).

reign_start("Neferneferuaten",-1334).

reign_start("Ramesses I",-1292).

reign_start("Ramesses II",-1279).

reign_start("Seti I",-1290).

reign_start("Seti II",-1203).

reign_start("Siptah",-1197).

reign_start("Smenkhkare",-1335).

reign_start("Thutmose I",-1506).

reign_start("Thutmose II",-1493).

reign_start("Thutmose III",-1479).

reign_start("Thutmose IV",-1398).

reign_start("Tutankhamun",-1332).

reign_start("Twosret",-1191).

```

Año de final de reino:

```

% reign_end (name,year)

reign_end("Ahmose I",-1514).

reign_end("Amenhotep I",-1506).

reign_end("Amenhotep II",-1398).

reign_end("Amenhotep III",-1350).

reign_end("Amenhotep IV/Akhenaten",-1334).

reign_end("Amenmesse",-1198).

reign_end("Ay",-1319).

reign_end("Hatshepsut",-1458).

reign_end("Horemheb",-1292).

reign_end("Merneptah",-1203).

reign_end("Neferneferuaten",-1332).

reign_end("Ramesses I",-1290).

reign_end("Ramesses II",-1213).

reign_end("Seti I",-1279).

reign_end("Seti II",-1197).

reign_end("Siptah",-1191).

reign_end("Smenkhkare",-1334).

reign_end("Thutmose I",-1493).

reign_end("Thutmose II",-1479).

reign_end("Thutmose III",-1425).

reign_end("Thutmose IV",-1388).

reign_end("Tutankhamun",-1323).

reign_end("Twosret",-1189).

```

Año de nacimeinto (datos totalmente incompletos):

```

% born (name)

born("Ahmose I",-1561).

born("Ahmose-Nefertari",-1562).

born("Hatshepsut",-1507).

born("Thutmose III",-1481).

born("Tiye",-1398).

born("Nefertiti",-1370).

born("Ankhesenamun",-1348).

born("Ramesses II",-1303).

```

Año de muerte:

```

% died (name)

died("Ahmose I",-1525).

died("Ahmose-Nefertari",-1495).

died("Amenhotep I",-1506).

died("Thutmose I",-1493).

died("Thutmose II",-1479).

died("Hatshepsut",-1458).

died("Thutmose III",-1425).

died("Amenhotep II",-1397).

died("Amenhotep III",-1351).

died("Thutmose IV",-1388).

died("Tiye",-1338).

died("Amenhotep IV/Akhenaten",-1334).

died("Nefertiti",-1330).

died("Ankhesenamun",-1322).

died("Smenkhkare",-1334).

died("Neferneferuaten",-1332).

died("Ay",-1319).

died("Horemheb",-1292).

died("Ramesses I",-1290).

died("Seti I",-1279).

died("Tuya",-1257).

died("Ramesses II",-1213).

died("Nefertari",-1255).

died("Seti II",-1193).

died("Twosret",-1189).

died("Siptah",-1198).

```

ID:(8429, 0)



Relación básica entre Personas

Descripción

>Top


Entre las relaciones entre personas que se conocen son la de padre (father), madre (mother) y pareja (consort). Adicionalmente se conoce la sucesión de los faraones. Los datos, obtenidos de wikipedia, son:

Padre:

```

% father (name of father, name of child)

father("Ahmose I","Ahmose-Ankh").

father("Ahmose I","Ahmose-Meritamon").

father("Ahmose I","Ahmose-Sitamun").

father("Ahmose I","Amenhotep I").

father("Ahmose I","Mutnofret").

father("Ahmose I","Ramose").

father("Ahmose I","Siamun").

father("Ahmose Pen-Nekhebet","Satiah").

father("Akhenaten","Ankhesenamun").

father("Akhenaten","Meritaten").

father("Amenhotep I","Amenemhat").

father("Amenhotep I","Ahmose").

father("Amenhotep I","Thutmose I").

father("Amenhotep II","Aaheperkare").

father("Amenhotep II","Aakheperure").

father("Amenhotep II","Ahmose").

father("Amenhotep II","Amenemopet").

father("Amenhotep II","Amenhotep").

father("Amenhotep II","Iaret").

father("Amenhotep II","Khaemwaset").

father("Amenhotep II","Nedjem").

father("Amenhotep II","Thutmose IV").

father("Amenhotep II","Webensenu").

father("Amenhotep III","Akhenaten").

father("Amenhotep III","Amenhotep IV/Akhenaten").

father("Amenhotep III","Beketaten").

father("Amenhotep III","Henuttaneb").

father("Amenhotep III","Iset").

father("Amenhotep III","Nebetah").

father("Amenhotep III","Nebetnehat").

father("Amenhotep III","Sitamun").

father("Amenhotep III","Smenkhkarev").

father("Amenhotep III","Thutmose").

father("Amenhotep IV/Akhenaten","Ankhesenamun").

father("Amenhotep IV/Akhenaten","Ankhesenpaaten Tasherit").

father("Amenhotep IV/Akhenaten","Meketaten").

father("Amenhotep IV/Akhenaten","Meritaten").

father("Amenhotep IV/Akhenaten","Neferneferuaten Tasherit").

father("Amenhotep IV/Akhenaten","Neferneferure").

father("Amenhotep IV/Akhenaten","Setepenre").

father("Amenhotep IV/Akhenaten","Smenkhkare").

father("Amenhotep IV/Akhenaten","Tutankhamun").

father("Ay","Mutnedjmet").

father("Ay","Nefertiti").

father("Hattusili III","Maathorneferure").

father("Kamose","Ahmose-Sitkamose").

father("Khaemwaset","Isetnofret II").

father("Merneptah","Isetnofret").

father("Merneptah","Khaemwaset").

father("Merneptah","Merenptah").

father("Merneptah","Seti II").

father("Raia","Tuya").

father("Ramesses I","Seti I").

father("Ramesses II","Amun-her-khepsef").

father("Ramesses II","Bintanath").

father("Ramesses II","Henutmire").

father("Ramesses II","Henuttawy").

father("Ramesses II","Isetnofret II").

father("Ramesses II","Khaemwaset").

father("Ramesses II","Meritamen").

father("Ramesses II","Merneptah").

father("Ramesses II","Meryatum").

father("Ramesses II","Nebettawy").

father("Ramesses II","Pareherwenemef").

father("Ramesses II","Ramesses").

father("Seqenenre Tao","Ahmose I").

father("Seqenenre Tao","Ahmose-Henuttamehu").

father("Seti I","Henutmire").

father("Seti I","Ramesses II").

father("Seti I","Tia").

father("Seti II","Seti-Merenptah").

father("Seti","Ramesses I").

father("Shuttarna II","Gilukhipa").

father("Tao","Ahmose-Nefertari").

father("Thutmose I","Amenmose").

father("Thutmose I","Hatshepsut").

father("Thutmose I","Nefrubity").

father("Thutmose I","Thutmose II").

father("Thutmose I","Wadjmose").

father("Thutmose II","Neferure").

father("Thutmose II","Thutmose III").

father("Thutmose III","Amenemhat").

father("Thutmose III","Amenhotep II").

father("Thutmose III","Beketamun").

father("Thutmose III","Iset").

father("Thutmose III","Menkheperre").

father("Thutmose III","Meryetamun").

father("Thutmose III","Nebetiunet").

father("Thutmose III","Nefertiri").

father("Thutmose III","Siamun").

father("Thutmose IV","Amenemhat").

father("Thutmose IV","Amenemopet").

father("Thutmose IV","Amenhotep III").

father("Thutmose IV","Petepihu").

father("Thutmose IV","Siatum").

father("Thutmose IV","Tentamun").

father("Thutmose IV","Tiaa").

father("Tushratta","Tadukhipa").

```

Madre

```

% mother (name of mather, name of child)

mother("Ahhotep I","Ahmose I").

mother("Ahhotep I","Ahmose-Nefertari").

mother("Ahhotep II","Ahmose-Sitkamose").

mother("Ahmose Inhapi","Ahmose-Henuttamehu").

mother("Ahmose","Amenmose").

mother("Ahmose","Hatshepsut").

mother("Ahmose","Neferubity").

mother("Ahmose","Ramose").

mother("Ahmose","Wadjmose").

mother("Ahmose-Nefertari","Ahmose-ankh").

mother("Ahmose-Nefertari","Ahmose-Meritamon").

mother("Ahmose-Nefertari","Ahmose-Meritamun").

mother("Ahmose-Nefertari","Ahmose-Sitamun").

mother("Ahmose-Nefertari","Amenhotep I").

mother("Ahmose-Nefertari","Mutnofret").

mother("Ahmose-Nefertari","Ramose").

mother("Ahmose-Nefertari","Siamun").

mother("Hatshepsut","Neferure").

mother("Hatshepsut-Merytre","Amenhotep II").

mother("Hatshepsut-Merytre","Iset").

mother("Hatshepsut-Merytre","Menkheperre").

mother("Hatshepsut-Merytre","Merytamun C").

mother("Hatshepsut-Merytre","Merytamun D").

mother("Hatshepsut-Merytre","Nebetiunet").

mother("Ipu","Satiah").

mother("Iset","Thutmose III").

mother("Iset","Tuthmosis III").

mother("Isetnofret II","Isetnofret").

mother("Isetnofret II","Khaemwaset").

mother("Isetnofret II","Merenptah").

mother("Isetnofret II","Seti II").

mother("Isetnofret","Bintanath").

mother("Isetnofret","Isetnofret II").

mother("Isetnofret","Isetnofret").

mother("Isetnofret","Khaemwaset").

mother("Isetnofret","Merenptah").

mother("Isetnofret","Ramesses").

mother("Juni","Tadukhipa").

mother("Meritaten","Meritaten Tasherit").

mother("Merytre-Hatshepsut","Amenhotep II").

mother("Mutemwiya","Amenhotep III").

mother("Mutnofret","Thutmose II").

mother("Nefertari","Amun-her-khepeshef").

mother("Nefertari","Baketmut").

mother("Nefertari","Henuttawy").

mother("Nefertari","Meritamen").

mother("Nefertari","Meryatum").

mother("Nefertari","Meryre").

mother("Nefertari","Nebettawy").

mother("Nefertari","Nefertari").

mother("Nefertari","Pareherwenemef").

mother("Nefertiti","Ankhesenamun").

mother("Nefertiti","Meketaten").

mother("Nefertiti","Meritaten").

mother("Nefertiti","Neferneferuaten Tasherit").

mother("Nefertiti","Neferneferure").

mother("Nefertiti","Setepenre").

mother("Puduhepa","Maathorneferure").

mother("Ruia","Tuya").

mother("Satiah","Amenemhat").

mother("Senseneb","Thutmose I").

mother("Sitre","Seti I").

mother("Sutailja","Siptah").

mother("Takhat","Amenmesse").

mother("Takhat","Twosret").

mother("Tey","Mutnedjmet").

mother("Tiaa","Thutmose IV").

mother("Tiye","Akhenaten").

mother("Tiye","Amenhotep IV/Akhenaten").

mother("Tiye","Beketaten").

mother("Tiye","Henuttaneb").

mother("Tiye","Iset").

mother("Tiye","Nebetah").

mother("Tiye","Sitamun").

mother("Tiye","Smenkhkare").

mother("Tiye","The Younger Lady").

mother("Tiye","Thutmose").

mother("Tuya","Henutmire").

mother("Tuya","Ramesses II").

mother("Tuya","Tia").

```

Consorte:

```

% consort (name,name of partner)

consort("Ahmose I","Ahmose-Henuttamehu").

consort("Ahmose I","Ahmose-Nefertari").

consort("Ahmose I","Ahmose-Sitkamose").

consort("Ahmose","Thutmose I").

consort("Ahmose-Henuttamehu","Ahmose I").

consort("Ahmose-Meritamon","Amenhotep I").

consort("Ahmose-Nefertari","Ahmose I").

consort("Ahmose-Sitkamose","Ahmose I").

consort("Amenhotep I","Ahmose-Meritamon").

consort("Amenhotep II","Tiaa").

consort("Amenhotep III","Daughter of Kadashman-Enlil of Babylon").

consort("Amenhotep III","Daughter of Kurigalzu I of Babylon").

consort("Amenhotep III","Daughter of Tarhundaradu of Arzawa").

consort("Amenhotep III","Daughter of the ruler of Ammia").

consort("Amenhotep III","Gilukhipa").

consort("Amenhotep III","Iset").

consort("Amenhotep III","Nebetnehat").

consort("Amenhotep III","Sitamun").

consort("Amenhotep III","Tadukhipa").

consort("Amenhotep III","Tiye").

consort("Amenhotep IV/Akhenaten","Ankhesenamun").

consort("Amenhotep IV/Akhenaten","Daughter of Burna-Buriash II, King of Babylon").

consort("Amenhotep IV/Akhenaten","Daughter of Satiya, ruler of Enisasi").

consort("Amenhotep IV/Akhenaten","Kiya").

consort("Amenhotep IV/Akhenaten","Meketaten").

consort("Amenhotep IV/Akhenaten","Meritaten").

consort("Amenhotep IV/Akhenaten","Nefertiti").

consort("Amenhotep IV/Akhenaten","Tadukhipa").

consort("Ankhesenamun","Amenhotep IV/Akhenaten").

consort("Ankhesenamun","Ay").

consort("Ankhesenamun","Tutankhamun").

consort("Ay","Ankhesenamun").

consort("Ay","Tey").

consort("Bintanath","Ramesses II").

consort("Gilukhipa","Amenhotep III").

consort("Hatshepsut","Thutmose II").

consort("Hatshepsut-Merytre","Thutmose III").

consort("Henutmire","Ramesses II").

consort("Horemheb","Amenia").

consort("Horemheb","Mutnedjmet").

consort("Iaret","Thutmose IV").

consort("Iset","Amenhotep III").

consort("Iset","Tuthmosis II").

consort("Isetnofret II","Merenptah").

consort("Isetnofret","Ramesses II").

consort("Kiya","Amenhotep IV/Akhenaten").

consort("Maathorneferure","Ramesses II").

consort("Meritamen","Ramesses II").

consort("Meritaten","Amenhotep IV/Akhenaten").

consort("Meritaten","Smenkhkare").

consort("Merneptah","Isetnofret II").

consort("Merneptah","Takhat").

consort("Mutnedjmet","Horemheb").

consort("Nebettawy","Ramesses II").

consort("Neferneferuaten","Akhenaten").

consort("Neferneferuaten","Smenkhkare").

consort("Nefertari","Ramesses II").

consort("Nefertiti","Amenhotep IV/Akhenaten").

consort("Ramesses I","Sitre").

consort("Ramesses II","Bintanath").

consort("Ramesses II","Henutmire").

consort("Ramesses II","Isetnofret").

consort("Ramesses II","Maathorneferure").

consort("Ramesses II","Meritamen").

consort("Ramesses II","Nebettawy").

consort("Ramesses II","Nefertari").

consort("Satiah","Thutmose III").

consort("Seti I","Tuya").

consort("Seti II","Takhat").

consort("Seti II","Tiaa").

consort("Seti II","Twosret").

consort("Sitamun","Amenhotep III").

consort("Smenkhkare","Meritaten").

consort("Tadukhipa","Amenhotep III").

consort("Takhat","Seti II").

consort("Thutmose I","Ahmose").

consort("Thutmose I","Mutnofret").

consort("Thutmose II","Hatshepsut").

consort("Thutmose II","Iset").

consort("Thutmose III","Hatshepsut-Merytre").

consort("Thutmose III","Menhet").

consort("Thutmose III","Menwi").

consort("Thutmose III","Merti").

consort("Thutmose III","Nebsemi").

consort("Thutmose III","Nebtu").

consort("Thutmose III","Satiah").

consort("Thutmose IV","Daughter of Artatama I of Mitanni").

consort("Thutmose IV","Iaret").

consort("Thutmose IV","Mutemwiya").

consort("Thutmose IV","Nefertari").

consort("Tiaa","Amenhotep II").

consort("Tiye","Amenhotep III").

consort("Tutankhamun","Ankhesenamun").

consort("Tuya","Seti I").

consort("Twosret","Seti II").

consort("Tiaa","Seti II").

```

Ademas se tiene el orden de sucesión:

```

% successor (actual name, succesor name)

successor("Ahmose I","Amenhotep I").

successor("Amenhotep I","Thutmose I").

successor("Amenhotep II","Thutmose IV").

successor("Amenhotep III","Akhenaten").

successor("Amenhotep IV/Akhenaten","Smenkhkare").

successor("Amenmesse","Siptah").

successor("Ay","Horemheb").

successor("Hatshepsut","Thutmose III").

successor("Horemheb","Ramesses I").

successor("Kamose","Ahmose I").

successor("Khamudi","Ahmose I").

successor("Merneptah","Seti II").

successor("Ramesses I","Seti I").

successor("Ramesses II","Merneptah").

successor("Seti I","Ramesses II").

successor("Seti II","Amenmesse").

successor("Siptah","Twosret").

successor("Thutmose I","Thutmose II").

successor("Thutmose II","Hatshepsut").

successor("Thutmose III","Amenhotep II").

successor("Thutmose IV","Amenhotep III").

successor("Tutankhamun","Ay").

successor("Twosret","Setnakhte").

```

ID:(1004, 0)



Relaciones no Recursivas: Sexo de la Persona

Descripción

>Top


Una ves estructurada la información se puede comenzar a dialogar con prolog.

Lo primero que podemos preguntar es para alguna de las personas cual sexo tiene. En general si se le reconoce que es padre sera hombre (man), si es madre mujer (woman). Si no se le conoce rol de padre o madre tendrá que ser declarada indefinida. En prolog se puede definir una condición mediante la nomenclatura

```

(if condicion -> accion_si_es_verdadera ; accion_si_es falsa)

```

Como en prolog la consulta puede escribir mediante

```

writeln(texto)

```

se puede comenzar por revisar si un X es padre (father)

```

(father(X,_) -> writeln("man") ; ... ).

```

donde _ indica que se esta permitiendo cualquier valor y en la linea punteada se debe escribir la acción si no es padre. Esta ultima acción tiene que verificar si es madre (mother) indicando dicho estado o que no se puede definir

```

(mother(X,_) -> writeln("woman") ; writeln("undefined"))

```

En consecuencia se puede definir una regla en que se determina el sexo por rol (sex_by_role) detectada de la forma

```

sex_by_role(X) :-(father(X,_) -> writeln("man") ;(mother(X,_) -> writeln("woman") ; writeln("undefined"))).

```

Si se aplica a Seti I se obtiene que este es hombre:

```

?- sex("Seti I").

man

true.

```

Si se aplica a Nefertiti se obtiene que es mujer

```

?- sex("Nefertiti").

women

true.

```

Si se aplica a Menhet al o a la que no se le conocen hijos se obtiene indefindio:

```

?- sex("Menhet").

undefined

true.

```

Sin embargo se sabe que Menhet fue esposa de Thutmose III por lo que debiese ser mujer. Por ello se puede perfeccionar la relación usando la relación de consorte de una persona con sexo definido.

ID:(1006, 0)



Relaciones no Recursivas: Faraón según año

Descripción

>Top


Como se tienen las fechas de inicio y fin de cada reino se puede determinar para cualquier año que faraón o faraones regían. Puede ser mas de uno ya que en el mismo año un faraón termina su reinado mientras que otro lo comienza o, eventualmente un tercero es coronado pero abdica/fallece en el mismo año.

Por ello introducimos la variable X como el nombre del faraón y el año mediante la variable Z. La primera condición es que X sea realmente faraón para lo que usamos la proposición

```

paharao(X)

```

Después hay que introducir la fecha de inicio de un reinado U y exigir que U se asocie al faraón X y que la fecha Z sea posterior o igual a U, o sea

```

reign_start(X,U),U=

```

Por ultimo se debe introducir una fecha de fin del reinado V y exigir que se asocie al faraon X y que la fecha Z sea anterior o igual a V, o sea

```

reign_end(X,V),Z=

```

Por ello se puede definir una relación pharao_by_date (faraón por fecha) de la forma

```

pharao_by_date(X,Z) :-pharao(X),reign_start(X,U),U=

```

Si se aplica la función al año -1245 el sistema responderá Ramsses II:

```

?- pharao_by_date(X,-1245).

X = "Ramesses II" ;

false.

```

Si se emplea para confirmar que Ramesses II reinaba en -1245 se puede consultar con un X definido con lo que el sistema contestara en forma afirmativa:

```

?- pharao_by_date("Ramesses II",-1245).

true

```

Sin embargo si se pregunta por Seti I el sistema dirá que se esta errado:

```

?- pharao_by_date("Seti I",-1245).

false.

```

Si se consulta por un nombre arbitrario también contestara que es falso:

```

?- pharao_by_date("Juan",-1245).

false.

```

ID:(8430, 0)



Relaciones no Recursivas: Uso de una Relación

Descripción

>Top


Las relaciones definidas en base a otras relaciones pueden ser a su vez usadas en la defunción de nuevas relaciones. Un ejemplo simple seria preguntar por los hijos de un faraón que reina en un año y que son potenciales herederos del trono. En este caso buscamos los hijos X de un faraón U que reina en el año Z donde no nos interesa definir U. Por ello definimos la relación

```

children_by_date(X,Z)

```

En este caso se puede usa la función de faraón por fecha:

```

pharao_by_date(U,Z)

```

condicional con que U sea ya sea el padre o la madre de X:

```

(father(U,X);mother(U,X))

```

por lo que la relación se escribe finalmente como

```

children_by_date(X,Z) :-pharao_by_date(U,Z),(father(U,X);mother(U,X)).

```

Cuando uno ingresa en la ventana de dialogo el comando children_by_date con el numbre del faraón como X y una fecha como -1245 se obtiene

```

?- children_by_date(X,-1245).

X = "Amun-her-khepsef" ;

X = "Bintanath" ;

X = "Henutmire" ;

X = "Henuttawy" ;

X = "Isetnofret II" ;

X = "Khaemwaset" ;

X = "Meritamen" ;

X = "Merneptah" ;

X = "Meryatum" ;

X = "Nebettawy" ;

X = "Pareherwenemef" ;

X = "Ramesses" ;

false.

```

donde hay que ir oprimiendo ";" para que se complete la lista. Si uno desea el rsultado en una lista puede usar el comando findall (encuentra todos) que sería

```

?- findall(X,children_by_date(X,-1245),Result).

```

y que arroja

```

Result = ["Amun-her-khepsef", "Bintanath", "Henutmire", "Henuttawy", "Isetnofret II", "Khaemwaset", "Meritamen", "Merneptah", "Meryatum"|...].

```

ID:(1008, 0)



Relaciones no Recursivas: Relación Familiar y Heredar

Descripción

>Top


Otro tema de interés es determinar que relación tienen dos faraones para entender como se heredaban los títulos.

Las alternativas mas comunes son que lo hereda:

- un hijo(a) (child_pharao)

- una pareja (consort_pharao)

- un hermano (sibling_pharao)

- un primo (cousen_pharao)

que se pueden definir como se describe a continuación.

Para lo que es el hijo o hija Y sea un faraón de un padre o madre X que sea faraon se tiene:

- hijo o hija Y debe ser faraon (pharao(Y)) y (,)

- debe existir un faraon X (pharao(X)) y (,)

- este debe ser padre (father(X,Y)) o (;) madre (mother(X,Y)) de Y

lo que nos da la posposición lógica:

```

child_pharao(X,Y) :-pharao(X),pharao(Y),(father(X,Y);mother(X,Y)).

```

Si se desea una lista de todos los casos se puede usar el comando findall con un arreglo de incógnita X e Y, dando

```

?- findall([X,Y],child_pharao(X,Y),Result).

Result = [["Ahmose I", "Amenhotep I"], ["Amenhotep I", "Thutmose I"], ["Amenhotep II", "Thutmose IV"], ["Amenhotep III", "Amenhotep IV/Akhenaten"], ["Amenhotep IV/Akhenaten", "Smenkhkare"], ["Amenhotep IV/Akhenaten", "Tutankhamun"], ["Merneptah", "Seti II"], ["Ramesses I"|...], [...|...]|...].

```

En el caso de la pareja es cosa de reemplazar las relaciones father y mother por las relaciones consort, con lo que se obtiene:

```

consort_pharao(X,Y) :-pharao(X),pharao(Y),(consort(X,Y);consort(X,Y)).

```

o como lista

```

?- findall([X,Y],consort_pharao(X,Y),Result).

Result = [["Hatshepsut", "Thutmose II"], ["Hatshepsut", "Thutmose II"], ["Neferneferuaten", "Smenkhkare"], ["Neferneferuaten", "Smenkhkare"], ["Seti II", "Twosret"], ["Seti II", "Twosret"], ["Thutmose II", "Hatshepsut"], ["Thutmose II"|...], [...|...]|...].

```

En el caso de faraones hermanos tenemos que:

- un hijo o hija X sea faraón (pharao(X)) y (,)

- otro hijo o hija Y sea faraón (pharao(Y)) y (,)

- no sean iguales (not(X=Y)) y (,)

- el padre o madre Z de X (father(Z,X);mother(Z,X)) y (,)

- sea el mismo que el de Y (father(Z,Y);mother(Z,Y))

lo que es:

```

sibling_pharao(X,Y) :-pharao(X),pharao(Y),(father(Z,X);mother(Z,X)),(father(Z,Y);mother(Z,Y)),not(X=Y).

```

o como lista

```

?- findall([X,Y],sibling_pharao(X,Y),Result).

Result = [["Amenhotep IV/Akhenaten", "Smenkhkare"], ["Amenmesse", "Twosret"], ["Hatshepsut", "Thutmose II"], ["Smenkhkare", "Amenhotep IV/Akhenaten"], ["Smenkhkare", "Tutankhamun"], ["Thutmose II", "Hatshepsut"], ["Tutankhamun", "Smenkhkare"], ["Twosret"|...]].

```

En caso de la relación de primos se debe agregar un nivel exigiendo que:

- X tenga un padre o madre U

- Y tenga un padre o madre V

- U y V sean distintos

- exista un abuelo o abuela Z que es padre o madre de U y V

lo que es:

```

cousen_pharao(X,Y) :-pharao(X),pharao(Y),not(X=Y),(father(U,X);mother(U,X)),(father(V,Y);mother(V,Y)),not(U=V),(father(Z,U);mother(Z,U)),(father(Z,V);mother(Z,V)).

```

o como lista

```

?- findall([X,Y],cousen_pharao(X,Y),Result).

Result = [["Amenhotep III", "Hatshepsut"], ["Amenhotep IV/Akhenaten", "Thutmose IV"], ["Hatshepsut", "Amenhotep III"], ["Hatshepsut", "Thutmose II"], ["Smenkhkare", "Thutmose III"], ["Smenkhkare", "Thutmose III"], ["Thutmose I", "Thutmose II"], ["Thutmose I"|...], [...|...]|...].

```

Adveretencia: lista aun contiene dobles y seríaineteresante contar el numero de relacioens.

ID:(8431, 0)



Relaciones Recursivas

Descripción

>Top


Una de las funciones de programas tipo prolog es el uso de funciones re-cursivas. Un ejemplo es si se busca recorrer un árbol obteniendo todas las dependencias.

Como ejemplo se pueden definir las relaciones básicas de paternidad (parent) o hijo(a) (child):

```

child(X,Y) :-(father(X,Y);mother(X,Y)).

parent(X,Y) :-(father(Y,X);mother(Y,X)).

```

Con ellos se puede definir por ejemplo una función que recorre el árbol hacia arriba buscando antepasados (ancestor). Primero lo son los padres

```

ancestor(X,Y) :-parent(X,Y).

```

y despues los padres de los padres

```

ancestor(X,Y) :-parent(X,Z),parent(Z,Y).

```

o en forma recursicas los antepasados de los padres

```

ancestor(X,Y) :-parent(X,Z),ancestor(Z,Y).

```

En resumen la función seria

```

ancestor(X,Y) :-parent(X,Y).

ancestor(X,Y) :-parent(X,Z),ancestor(Z,Y).

```

En forma análoga para los descendientes

```

decendent(X,Y) :-child(X,Y).

decendent(X,Y) :-child(X,Z),decendent(Z,Y).

```

Una aplicación es buscar los antepasados de "Amenhotep I" lo que da

```

?- findall(X,ancestor("Amenhotep I",X),Result).

Result = ["Ahmose I", "Ahmose-Nefertari", "Seqenenre Tao", "Ahhotep I", "Tao", "Ahhotep I"].

```

Sin embargo el árbol de las relaciones de las dinastías egipcias tiene el problema de loops cerrados en que se encuentran relaciones cerradas en que una cadena de antepasados o descendientes terminan siéndolo de si mismos. Esto lleva a que pologe termina respondiendo y solo abortando cuando ya no cuenta con memoria.

ID:(1007, 0)