Why Use DAML?Home | About DAML | Announcements | Roadmap | Site Search
The following whitepaper was written by Adam Pease then of Teknowledge on 10 April 2002.
When you tell a person something, he can combine the new fact with an old one and tell you something new. When you tell a computer something in XML, it may be able to tell you something new in response, but only because of some other software it has that's not part of the XML spec. That software could be implemented differently in systems that still conform to the XML spec. You might get different answers from those systems. If you tell a computer something new in DAML, it can give you new information, based entirely on the DAML standard itself. A certain set of conclusions are required from any system that conforms to DAML. Systems may be able to provide all sorts of additional services and responses beyond the requirements of the standard but a certain basic set of conclusions will always be required. DAML gives computers one extra small degree of autonomy that can help them do more useful work for people.
A set of DAML statements by itself (and the DAML spec) can allow you to conclude another DAML statement whereas a set of XML statements, by itself (and the XML spec) does not allow you to conclude any other XML statements. To employ XML to generate new data, you need knowledge embedded in some procedural code somewhere, rather than explicitly stated, as in DAML.
For example, "Parenthood is a more general relationship than motherhood." and "Mary is the mother of Bill" together allow a system conforming to DAML to conclude that "Mary is a parent of Bill". In this way, if a user poses a query to a DAML search system such as "Who are Bill's parents?", the system can respond that Mary is one of Bill's parents, even though that fact is not stated anywhere, but can only be derived by a DAML application.
More formally stated, give the statements
(motherOf subProperty parentOf)
(Mary motherOf Bill)
when stated in DAML, allows you to conclude
(Mary parentOf Bill)
based on the logical definition of "subProperty" as given in the DAML spec. The same information stated in XML does not allow you to assert the third fact. XML itself provides no semantics for its tags. One might create a program that assigns similar semantics to a "subProperty" tag, but since that semantics isn't part of the XML spec, applications could be written which conform to the XML spec, and yet do not make that assertion.
Other web languages such as RDFS go a step further than XML, and could support the example just given, but DAML offers a host of other standard properties such as equivalence ("childOf" on an English geneology site is the same as "enfantDe" on a French site), or that particular properties are unique (a social security number is associated with only one individual).
It should also be easy to see that there is similar utility in just about every domain: in finance where one might query about all bank accounts associated with a particular person (whether they are directly owned by, or held in trust for etc), in logistics where one wants to ask the rates for shipping to any eastern European city (where no such category has been predefined and only the countries in eastern Europe are listed). Having knowledge that can be dynamically applied to find an answer, rather than predefined procedures, is extremely powerful.
DAML provides a basic infrastructure that allows a machine to make the same sorts of simple inferences that human beings do. It's just a start, but is a critical foundation for a web of information that machines can draw upon.