Question

J'ai une implémentation Prolog qui me permet de confronter les points de temps à des événements en utilisant une représentation basée sur Prolog-des 13 relations de Allen. Chaque événement a un point de départ (AAAA-MM-JJ) et un point final (AAAA-MM-JJ) et je peux vérifier si deux événements se sont produits en même temps ou l'un est avant une autre, etc jusqu'à la granularité de jour (par exemple 03/12/1555 est avant 04/12/1555). Il fait ok travail avec soi-disant dates AC (Anno Domini), mais maintenant j'ai un bon nombre d'événements qui se sont produits en Colombie-Britannique (avant Jésus-Christ). Quelle est la meilleure façon de gérer ces événements de la Colombie-Britannique et être en mesure de dire, par exemple, que la fondation d'Athènes (BC 1556) est avant la naissance de Colombus (1451) ..... Toute idée est plus que bienvenue.

Merci,

.

Était-ce utile?

La solution

Comment entreposez-vous votre date? Si elle est dans votre propre struct comprennent alors l'AD ou BC, et l'utiliser comme une sorte de drapeau négatif, le traitement de la Colombie-Britannique années comme négatif, années le traitement AD comme positif.

Autres conseils

Je crois qu'il demande si vos dates sont stockées dans différents prédicats ou si elles sont seulement précisées dans un prédicat de date unique, par exemple, a_date (12 345, « 24/12/2011 ») où le premier champ est un champ d'ID . C'est, stockez-vous les dates que quelque chose comme

a_date (event_id, date_value)

où le format de date_value est AAAA-MM-JJ?

Une solution: exiger « AD » ou « BC » dans la chaîne de date, la valeur par défaut étant « BC », et le traitement de l'absence soit comme étant « AD ».

Une autre solution: Créer un nouveau prédicat date, appelez

a_date (even_id, date_value, drapeau)

où le drapeau est soit bc ou ad. Si l'indicateur est annonce, les mathématiques se poursuit comme d'habitude. Si l'indicateur est bc, branche au nouveau code qui fait le calcul approprié. Date existantes prédicats de la forme a_date (event_id, date_value) serait interprété comme a_date (event_id, date_value, "AD")

C'est, dans le code

a_date (event_id, date_value): = a_date (event_id, date_value, "AD")

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top