By making coral user transparent we relieve the users

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: te transparency of Coral to the users of the interface. By making Coral user-transparent, we relieve the users from the burden of knowing Coral before being able to use ORLog. It has been designed to serve as an online interactive command interpretor as well as an ORLog interpretor. It allows users to write programs in ORLog, interpret them and answer queries. It also provides basic system services like viewing, editing and printing program les, saving in-memory programs, running a stored program, etc. It is also one of our goals to let the users eventually exploit some of the programming features available in Coral. For example, execution tailoring through high level meta-annotations, modules, various query evaluation strategies (top-down, bottomup, etc.), negation, persistent objects through Exodus storage manager, etc., and of course to take advantage of relational query optimization techniques, until we understand more about such issues in a purely object-oriented logic in general. We intend to support a subset of these features in our system by seamless integration of ours with Coral in a user-transparent way. 5.3.2 Systems Architecture In Figure 14, the architecture of the system and its components are shown. The user interface module is an interactive shell and a command interpreter. Users are expected to interact with the system through this interface. At the command prompt users may request services, write programs interactively, or both. ASCII stored programs can also be brought into memory and executed using the consult command facility. Every clause that is part of a consulted le, or that was entered interactively, is parsed and translated into Coral by the parser and the translator modules respectively. The translator also determines the locality of each property clause and adds corresponding locality clauses to the program in real time. It also makes the user program clauses atomic1. Only syntactically correct clauses are accepted as active rules that are added to a system bu er by the ORLog program bu er module. A translated version is simultaneously maintained by the translated Coral program module. Users always see and refer to the program in the ORLog program bu er area. Recall that similar to F-logic 47], we also allow the users to write molecular formulas as a syntactic sugar. However, the molecules are broken down to atoms by the atomizer module, and subsequently all atomized clauses are converted to the usual clausal form (if not already). 1 91 Orlog Interface Orlog User Interface Orlog Inference Engine Coral Query Evaluation System optimized program queries Coral Query Optimizer OS Files Exodus Storage Manager answer service request Orlog programs + queries Atomizer and Translator programs Orlog Program Buffer Translated Coral Program Main Memory Orlog Parser and Syntax Analyser Coral Data Manager Inheritance Engine Disk Service and Help System Figure 14: ORLog systems architecture. Clauses can be added, or removed from the bu er area using the service and help module from command prompt. Queries (translated) are processed by the Coral query optimizer and the Coral query evaluation system. All queries are treated as ad hoc and processed the moment they are posed. The Coral query optimizer takes the translated program in the translated Coral program bu er, adds the set of rules (axioms) in the inheritance engine module to account for inheritability of properties, and then sends the optimized program to the Coral query evaluation system. Answers are then forwarded to the user interface by the Coral query evaluator as a set of bindings to the free variables in the query. Note that working in concert, the Coral query optimizer, Coral query evaluation system and the ORLog inheritance engine act as the ORLog Inference Engine. 5.3.3 Design Issues Since the reduction is user-transparent, we maintain two versions of a program { one is in the input version to which the user refers, and the other is the translated version which is sent to Coral for execution. They are stored in two ASCII text les and are maintained by the program bu er and translated bu er modules respectively. Coral is invoked on the event of a user query as a system call from the interface and the encoded i-completed program is passed to it as an input parameter. Coral then adds 92 the inheritability axioms from its inheritance engine and evaluates the query. Completion and encoding take place interactively and instantly in the interface. This saves time. Since clauses can be added or taken away interactively, maintaining the set of locality information in the completed set is a bit involved. However, factoring out the inheritability computation in inheritance engine is viewed both as a convenience and saving. It also now lets us compute only the relevant part of the inheritability we need in order to answer a query. 5.3.4 E ciency Issues A considerable amount of time is being spent by the interface every time it calls Coral to evaluate a single query. The program les are being closed and opened several times, Coral environment is being created, data structures are built for the sole purpose of a...
View Full Document

This document was uploaded on 01/10/2011.

Ask a homework question - tutors are online