Domanda

Ho un implementazione prologo che mi permette di confrontare punti di tempo in eventi utilizzando una rappresentazione prologo a base delle 13 relazioni di Allen. Ogni evento ha un punto di partenza (AAAA-MM-DD) e un punto finale (AAAA-MM-DD) e posso verificare se due eventi sono accaduti nello stesso momento o uno è prima di un altro, ecc fino al giorno granularità (ad esempio, 1555/12/03 è prima 1555/12/04). E funziona bene con date AC cosiddetti (Anno Domini), ma ora ho un buon numero di eventi che si sono verificati aC (prima di Cristo). Che è un modo migliore per gestire questi eventi BC ed essere in grado di dire, per esempio, che la fondazione di Atene (BC 1556) è prima della nascita di Colombus (1451) ..... Qualsiasi idea è più che benvenuto.

Grazie,

I.

È stato utile?

Soluzione

Come stai immagazzinando la data? Se è nella vostra struct quindi includere l'AD o BC, e utilizzare questo come una sorta di bandiera negativo, BC trattamento anni come negativo, AD trattamento anni come positivo.

Altri suggerimenti

Credo che sta chiedendo se le date sono memorizzate in diversi predicati o se sono specificate solo in un'unica data predicato, ad esempio, a_date (12345, "2011/12/24") dove il primo campo è un campo ID . Cioè, fai di memorizzare le date come qualcosa di simile

a_date (event_id, date_value)

in cui il formato di date_value è AAAA-MM-DD?

Una soluzione: richiedere "AD" o "BC" nella stringa data, con il default è "BC", e trattando la mancanza di uno come "AD".

Un'altra soluzione: Creare una nuova data predicato, lo chiamano

a_date (even_id, date_value, bandiera)

dove la bandiera è o BC o annuncio. Se flag è annuncio, la matematica va avanti come al solito. Se flag è bc, ramo di nuovo codice che fa la matematica appropriata. Esistenti data predicati della forma a_date (event_id, date_value) viene interpretato come a_date (event_id, date_value, "AD")

Cioè, in codice

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top