The Relational-Functional Markup Language RFML
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Harold Boley, DFKI GmbH (boley@dfki.de)
Extended Abstract
"Knowledge on the Web" has become an increasingly important topic in
computer science, crossing the boundaries of several traditional
subfields such as information systems, artificial intelligence,
programming languages, and computer networks. The topic is also
impacting computer applications such as knowledge management, content
distribution, and electronic business. Much of the knowledge on the
Web constitutes definitions of relations and functions.
This talk gives a preliminary specification of the
Relational-Functional Markup Language RFML, based on Relfun
{http://www.relfun.org/} and XML {http://www.w3.org/XML/}. The kernel
of the Relational-Functional language is well-suited for XML markup of
Web knowledge since it constitutes a uniform, rather small language,
but - by virtue of the relational-functional integration - has
sufficient expressive power for practical use. RFML can be seen as an
XML application for integrated relational-functional information.
This information consists of both relational (hn) and functional (ft)
clauses, together defining a unified notion of operators, which can
call each other in general ways. Because of the small kernel, it was
also possible to keep the RFML document type definition small and open
to various extensions.
The talk will argue for possible cross-fertilizations between the XML
(schema and query) and declarative-programming communities. For
instance, instead of separating XML-element assertion and querying,
RFML incorporates both of these aspects in a uniform manner: asserted
clauses often contain queries, and queries are also usable on an
interactive top-level.
For example, the unconditional (ground) equation
pay(john,fred,17.95) = cheque
defining a 'pay' function, in RFML becomes the following markup:
pay
john
fred
17.95
cheque
It can be queried (non-ground) directly via
pay
customer
merchant
price
binding the three variables to the corresponding constants in the
definition pattern and returning the constant 'cheque'. It can also be
queried indirectly by the Relfun conditional (non-ground) equation
acquire(Customer,Merchant,Product,Price) :-
satisfied(Customer,Product,Price) &
pay(Customer,Merchant,Price).
defining an 'acquire' operation, whose RFML version uniformly marks up
the relational ('satisfied') and functional ('pay') subqueries via
'callop' subelements:
acquire
customer
merchant
product
price
satisfied
customer
product
price
pay
customer
merchant
price
RFML has been implemented as a (Web-)output syntax for
relational-functional knowledge bases and computations. Further
descriptions and download information will be available
{http://www.relfun.org/rfml/}.