And now I can tie my discussion of temporal data back to Rich's concept of fluents, and to the more general concept of indexicals.
A valid time period ("state time period" in my book) defines the time period during which whatever is described by a row in a table was/is/will be in the state ascribed to it by the columns of that table.
A transaction time period ("inscription time period" in my book) defines the time period which begins when a row is physically created and ends when the row is logically deleted (i.e. marked as deleted, but left in the table so that history is retained).
A speech act time period is what I called an "assertion time period" in my first book. But that book was based on the mistaken idea that the time during which someone was/is/will be willing to assert that the statement made by a row in a table was/is/will be (in state time) true could substitute for the standard concept of transaction time.
The substitution extended the concept of transaction time by allowing rows in tables to be created with future transaction/assertion time periods. Future transaction time is an oxymoron, which is why it has always been disallowed. But future assertion time clearly is not-- thus demonstrating that the two concepts are distinct, and that I should not have conflated them.
So speech acts are the public expressions of propositional attitudes. (Don't know if anyone else has put it that way, but it seems right to me.) The two speech acts relevant to the management of temporal data are (i) asserting that a row (the statement/proposition expressed by that inscription) represents ("makes") a true statement, and (ii) withdrawing a previous assertion.
Extension to other propositional attitudes -- assent, belief, doubt, etc. -- would be useful, I think, but I only alluded to it in my second book (see especially Ch.19).
The other thing I did in that second book was provide a metamodel which incorporates statements themselves as managed object (represented by entities in logical data models, by tables in databases). I don't know of any other databases that do this. The temporal extent of a statement, in a set of databases, begins when its first inscription is created, and ends when its last inscription is deleted.
And, by the same token, that metamodel incorporates propositional attitudes (associated with the persons or groups whose attitudes they are, e.g. the attitudes of the corporation who owns the database) with statements. The temporal extent of a party/propositional attitude/statement in a set of databases, of course, begins with the first assertion (or other propositional attitude) of that statement by that party, and ends with the assertion withdrawal by that party of that statement.
I note also that by reifying statements themselves (and not just their inscriptions, as is done everywhere else), it becomes possible to track both inscription (statement token) provenance, and also statement (type) provenance.
So: fluents. The three time attached to rows in relational tables resolve three different indexicals associated with those rows. Lacking such resolution, we all in fact understand these three kinds of time to be relativized to Now() in non-temporal tables.
For example: let a row in a Customer table be [C123 | Smith | Platinum], with C123 the primary key, "Smith" the customer's name, and "Platinum" the customer's status. We know who we are talking about. But:
- When did/does/will C123 have that name and that status? i.e. when will C123 be in that state? Standard bitemporal theory and my own agree on this, but they call it the "valid time" during which that customer was in that state, and I call it the "state time". Without state time being explicitly included in the row, we all understand that what is meant is "right now" (and until I update the database to indicate a change of C123's state).
- When did the database include that row as part of the current information content in that table? (Let's say that the row was originally entered with "Smythe" instead of "Smith", and was corrected a week later. For the first week, the "Smythe" row was part of the then-current information content; after that week, it no longer was.) Without inscription time being explicitly included in the row, we all understand what what is meant is "right now" (and until I update the database).
- Current computer science takes it (i.e. implicitly assumes) that their transaction time is co-extensive with my assertion time (now called "speech act time"). But it's not. We can inscribe a statement token before we are ready to say that it represents a true statement. So we must be able to enter a row into a table and somehow specify that our assertion that it makes a true statement is deferred for some time. But without assertion time, the best we can do is assume that we will not inscribe a row until we are willing to assert that it says something true. After a career in commercial IT, I can tell you that this assumption makes it impossible to express a lot of things in databases that businesses would ask for (if only they knew enough to ask for it). Lots of examples, BTW, in both books.
Like anyone with an idea, I see a lot of possibilities for it. Part 1 of MTRD, plus Chapter 19 are my currently published expressio of the idea. But by summarizing bits and pieces of it (another piece is my notion of an upper-level ontology common to all relational databases, a notion that Matthew West seems skeptical of), I hope to garner valuable criticism.
Thanks.
Tom