I'm doing a follow-up on this project, and I'm soliciting comments.
One of the main issues I discovered when working on this project is the way the WL handles dates. There are many issues with DateObject when it tries to parse string input. If you get a date object for 8/24/79 (the traditional date for the destruction of Pompeii), the date object is for 1979. If you enter the dates for the battle of Hastings or the Battle of Agincourt, the date object, by default, says that the dates are in the Gregorian calendar, when 10/25/1415 is, in fact a date in the Julian calendar.
I can understand that a primarily scientific or mathematical program would not get this right. Most of the hard sciences do not treat history at all. Astronomy does, but its solution is to use Julian days, which essentially pretends that the Gregorian calendar was in use indefinitely far in the past. Geology and evolutionary biology are both historical, but the time frames involved are so large that the difference in calendars is irrelevant. Even Carbon 14 dating, which can deal in dates from the historical period has an uncertainty far larger than any calendar difference.
I studied musicology as part of my education as a composer, and there is a lot of crossover with history, art history and the like. Using the right calendar is important for these disciplines. In addition to calendar differences, one has to handle the fact that different countries or regions had different dates for the start of the year, usually March 1 or January 1. (There is a reason why December is named as it is -- it used to be the 10th month of the year.) This results in dates being given such as 12 Feb 1284/5, where the uncertainty could not be resolved.
This is important for WL because of the desire to be able to compute with the data. For example, if you wanted to know the phase of the moon on the night of the Battle of Agincourt, you would need to first convert the Julian calendar date to Gregorian (November 3, 1415), and then use the astronomical calculation to determine the phase of the moon. Otherwise, you'd get the wrong answer.
I will be working on a function that will essentially pre-process dates entered as strings before passing the result to DateObject. I don't want to use Interpreter because it is slow unless you have a T1 line or better.
This is just the beginning, of course. A lot of the old dates in the knowledge base assert that the dates are in the Gregorian calendar, when, in fact they are Julian calendar dates. This is a larger issue that I can't fix with software.
So, what I am seeking is some comments on the best way to proceed -- what functionality you think should be included, etc.