2010-11-25 31 views
1

J'ai une implémentation prologue qui me permet de comparer les points temporels dans les événements en utilisant une représentation prologue des 13 relations d'Allen. Chaque événement a un point de départ (AAAA-MM-JJ) et un point de fin (AAAA-MM-JJ) et je peux vérifier si deux événements se sont produits en même temps ou l'un avant un autre, etc. jusqu'à la granularité du jour (p. 1555-12-03 est avant le 1555-12-04). Ca fonctionne bien avec les dates dites AC (Anno Domini), mais maintenant j'ai un bon nombre d'événements qui se sont produits BC (avant Christ). Quelle est la meilleure façon de gérer ces événements de la Colombie-Britannique et de pouvoir dire, par exemple, que la fondation d'Athènes (BC 1556) est antérieure à la naissance de Colombus (1451) ... Toute idée est plus que bienvenue.comparaison des dates AC et BC

Merci,

I.

Répondre

0

Comment entreposez-vous votre date? Si c'est dans votre propre structure, incluez l'AD ou BC, et utilisez ceci comme une sorte de drapeau négatif, BC traitant les années comme négatives, AD traitant les années comme positives.

+0

Mes dates sont représentées sous la forme AAAA-MM-JJ et elles sont jointes à l'événement via un ID unique. Pas toujours je suis capable de joindre MM-DD donc au cas où ils sont manquants, ils sont simplement remplacés en utilisant 00-00 qui restent inconnus. Ensuite, j'ai des règles où les opérateurs arithmétiques vérifient si Y1 paranza

+0

Désolé, mon message a été coupé, BC et AD seront-elles affectées par le mécanisme de comparaison via les points de temps? Merci pour votre réponse très rapide. I. – paranza

+0

Je pense que vous aurez besoin de AD ou BC, sinon comment savez-vous si l'année 250 est BC ou AD ?. Par exemple deux dates 2000-10-01 et 2000-12-01, on suppose que le 2000-12-01 était après le 2000-10-01, mais si le 2000-10-01 était une date AD et que le 2000-12-01 était un Date BC, la comparaison était fausse. – JLWarlow

1

Je crois qu'il demande si vos dates sont stockées dans divers prédicats ou si elles ne sont spécifiées que dans un seul prédicat de date, par exemple, a_date (12345, "12-24-2011") où le premier champ est un ID champ. 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: nécessite "AD" ou "BC" dans la chaîne de date, la valeur par défaut étant "BC", et traitant l'absence de l'un comme étant "AD".

Une autre solution: Créer une nouvelle date prédicat, appelez

a_date (even_id, date_value, drapeau)

où le drapeau est soit bc ou ad. Si le drapeau est une publicité, les maths continuent comme d'habitude. Si flag est bc, branchez-vous au nouveau code qui fait le bon calcul. Date existantes prédicats de la forme a_date (EVENT_ID, date_value) seraient interprétées 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")