Using the Web Instead of a Window System

James Rice, Adam Farquhar, Philippe Piernot, and Thomas Gruber
Knowledge Systems Laboratory
Gates Building 2A, M/C 9020
Stanford, CA, 94305
+1 415 723 3444
{rice, axf, piernot, gruber}@ksl.stanford.edu
Permission to copy without fee all or part of this material is granted provided that copies are not made or distributed for direct commercial advantage, the ACM copyright notice and the title of the publication and its date appear, and notice is given that copying is by permission of ACM. To copy otherwise, or to republish, requires a fee and/or permission.

CHI '96 Vancouver, B.C. Canada

(c) 1996 ACM

Images used herein copyright and other HTML pages (c) 1996 Stanford University

This is the linearized, most up-to-date version of this paper, which appears in the CHI'96 proceedings. The non-linearized version more suitable for viewing with a web browser can be found here.
A postscript version of this paper can be found here.
The substantially shorter paper version of this paper can be found here.

Abstract
Keywords
1. Introduction
1.1. The Application
1.2. Providing Access to Applications Over the Web
1.3. Other Web-Based Applications at the KSL
2. Problem Analysis and Design
2.1. Objectives
2.1.1. Support for Naïve Users
2.1.2. Support for Power Users
2.1.3. User Support
2.1.4. Trustworthiness
2.1.5. Overcome Previous Difficulties
2.2. Constraints Imposed by HTML and HTTP
2.2.1. Multiple Browsers
2.2.2. Time-Travel in the Interface
2.3. Choices and Design Principles
2.3.1. Minimize Intermediate Pages and Number of Clicks
2.3.2. Edit-In-Place Metaphor
2.3.3. Pages Represent Objects
2.3.4. Five Types of Interface Widgets
2.3.5. Consistency Across Browsers
2.3.6. Native Window System's Submit Buttons
3. Evolution of Design
3.1. Early Design and Mockup
3.2. Early Implementation
3.3. Problems of Scale
3.4. Breakdown of the Edit-in-place Model
3.5. Observations on User Interaction
3.5.1. Reluctance to Click
3.5.2. Logging Out
3.5.3. The Usage of User Preferences
4. The Future
4.1. Java and Client-side Scripting
4.2. HTML: Problems and Solutions
5. Conclusions
Acknowledgments
References

Abstract

We show how to deliver a sophisticated, yet intuitive, interactive application over the web using off-the-shelf web browsers as the interaction medium. This attracts a large user community, improves the rate of user acceptance, and avoids many of the pitfalls of software distribution.

Web delivery imposes a novel set of constraints on user interface design. We outline the tradeoffs in this design space, motivate the choices necessary to deliver an application, and detail the lessons learned in the process.

These issues are crucial because the growing popularity of the web guarantees that software delivery over the web will become ever more wide-spread.

This application is publicly available at: http://www-ksl-svc.stanford.edu:5915/

Keywords

Internet application, remote user interface, active document, CSCW, World Wide Web, Hypertext, HTML, HTTP, Java.

1. Introduction

The recent explosion in the popularity of the world-wide web and its associated hypertext markup language (HTML) and hypertext transfer protocol ( HTTP) presents an exciting new opportunity to provide widely distributed access to sophisticated software applications [16]. The design of HTTP and HTML, however, place a number of novel and often severe constraints on the design of interfaces that use them. This paper outlines our approach to providing a rich user interface to a sophisticated application over the web, specifies our design objectives, the constraints imposed by HTML and HTTP, and the trade-offs that we made in order to meet these objectives whilst satisfying these constraints. We further document the evolution of the design and implementation of our application, and some of the lessons learned. In addition, we also cover a number of topics which are not mentioned in the CHI proceedings version of this paper. These are the use of user preferences, the impact of Java, and ways in which HTML could easily be changed to support this sort of application better.

1.1. The Application

Our application [1] is a system for browsing, creating, and editing Ontologies. An ontology is a formal specification that defines the representational vocabulary in some domain of discourse [3]. While our ontologies are used for knowledge sharing and agent interoperability [2], they share many properties in common with class libraries, object-oriented specifications, object-oriented simulation components, database schema definitions, and knowledge bases. We expect that many of our design decisions will apply to systems for browsing and editing these types of objects.

For example, an ontology about physical measurement [5] defines logical relations and functions that specify concepts such as unit of measure (e.g., meters), physical dimension (e.g., length), and algebraic operators for unit conversion and dimensional analysis. Such ontologies are used to enable the sharing and exchange of data and models among distributed and heterogeneous applications.

Ontology construction is, by nature, a distributed, collaborative activity [7]. Since an ontology is a specification of a domain that is common to several applications, defining an ontology is analogous to defining a technical standard where effective communication and collaboration is required. Not only must there be some medium for forming concensus on the meaning of terms, but the expertise needed to define and review ontologies is distributed. For example, an ontology of therapeutic drugs is the product of a concensus among practitioners in the field and other potential stakeholders - all of whom are distributed across geographical and organizational boundaries (e.g., hospitals, insurers, government agencies). These properties of the user population motivate the development of distributed collaboration and the ontology editor tool.

Our application is unusual among web services because it allows users to create and edit objects, rather than simply retrieve them by following hypertext links or by making simple database queries.

The implemented application provides a full, distributed, collaborative editing environment with over a hundred user commands, context sensitive help [14], context sensitive user feedback and bug-report collection, multi-level undo/redo, multi-user sessions. It has been publicly available since February 1995 and (as of 1/96) supports about 900 users, about 150 of whom we would classify as "serious," who average over 2000 requests per day. Feedback from users and data collected online support the claim that it is possible to deploy richly interactive applications over the web. Based on our experience in developing the ontology editor, we offer an approach to developing and delivering web-based applications that instantiates this claim.

1.2. Providing Access to Applications Over the Web

We came to the web approach out of frustration with conventional approaches to software development and distribution. The costs of ensuring that software was portable over multiple hardware and software platforms together with the cost of distributing software releases, patches, and upgrades were simply too high for a small research institution. Indeed, these costs often dominated our efforts to develop and test new functionality. Providing a system to support distributed collaborative work would only make the situation worse.

The web appeared to be a reasonable alternative. We had previously developed experience in providing automatically generated HTML documents to describe ontologies and other structured objects [9]. People found that using their native hypertext browsing systems to examine these documents was both valuable and appealing.

The ontology editor is a good candidate for this approach because (1) it requires distributed access from heterogeneous environments; and (2) think-time dominates computation time. This makes it possible to provide a useful shared computational resource for a community of users from a centralized server without the hardware costs being too onerous.

1.3. Other Web-Based Applications at the KSL

The ontology editing environment described in this paper is one out of a number of applications that we have built using the web. To put this work into context, we list some of these applications here.

2. Problem Analysis and Design

In this section we begin to describe how we addressed the problem of delivering our network-based application, and how we designed it.

2.1. Objectives

Our goal was to create a general environment to facilitate the development and sharing of ontologies. Such an environment must assist the user in the basic development tasks of browsing, creating, maintaining, sharing, and using ontologies. We also realized that many of our users want to develop ontologies through a consensus process; therefore, we needed to provide tools to help people collaborate during development.

From the outset, we wanted to make our potential user community as large as possible. The target community is diverse and includes academics, industrial researchers, and government employees. Once we had established our web-based system, our user community grew from a handful to hundreds in the space of a few months.

Our burgeoning user community was an additional incentive to use the web. Furthermore, distributed access eliminates the need for our users to have high-end hardware systems or expensive licenses for the proprietary software systems that we used to develop our application more efficiently. A centralized server model also means that we can make changes and upgrades to the server at a single site (or small number of controlled sites); the new, improved software is instantly accessible to all users. In short, we decided that it would be cheaper to provide free computational resources to our entire user community than to develop shrink-wrap software and distribute it to them.

Our challenge was to design a user interface that operates under the constraints of the web, remains intuitive and natural to users, and provides full access to the application.

2.1.1. Support for Naïve Users

In order to achieve our goal of broad impact, we worked to make our application intuitive and usable to anyone familiar with web browsers (e.g., Netscape Navigator or Mosaic) so that a new user could pick up and productively use our application without any formal training or preparation. We explicitly addressed this by the following means:

HTML used for documentation: Our application has no manual at all per se. All documentation is provided on-line using the same browser that the user already employs to operate the application.

Guided tour: One important aspect of the documentation is a guided tour [11, 15], which takes the new user through a credible editing scenario, motivating the different features of the system.

In-context, automatically-generated help: Unlike applications such as Microsoft Word 6.0, in which documentation is available only in an idiosyncratic hypertext browser, our application uses the same hypertext browser uniformly for all of its interface. This means that help and documentation are seamlessly integrated with the rest of the system. Indeed, the help facility builds help pages in real-time so as to give the most focused and helpful response in the user's context. A novel feature of the help facility is that the commands available to the user are echoed as widgets on the help page (figure 1 right). If the user clicks on the widget in the help page which has accompanying explanatory text and links to worked examples, then the command associated with that widget is activated just as if it were invoked on the page from which the user made the help request.

Familiar interface: There was no existing interface metaphor for ontology editing. We selected a document metaphor (as opposed to a two dimensional representation as a directed graph, for example) so that the application could be smoothly integrated into the HTML world. This allows users who are familiar with hypertext documents and browsers to make an easy transition into our interactive application.

2.1.2. Support for Power Users

Although we were keen to expand our user community as much as possible, we were aware that experienced ontology developers would not want to be held back by an interface that was optimized for naïve users. It is very important to us to support power users. The vast majority of meaningful ontologies are developed by such users, even if these ontologies are then used by the less experienced as building blocks. The issue of power user support was eventually resolved by providing a powerful user preference facility. This allows the experienced user to tailor the look and feel as well as the set of commands exposed at any given time.

2.1.3. User Support

In order to be responsive to our users, we wanted to provide an obvious mechanism that they could use to make suggestions and report bugs. We resolved this by providing feedback buttons on every page for comments, questions and bug reports. The application captures the user's context automatically so as to make the user's bug report as useful to the developers as possible.

2.1.4. Trustworthiness

Because we were intending to provide a multi-user shared resource, it was essential for the user community to find our application both reliable and trustworthy. Otherwise, they would not use it to develop confidential or proprietary ontologies. To this end, our application supports a user and group model similar to that provided by operating systems and password protection to ensure privacy and security. Ontologies are protected by maintaining multiple versions to which the user can revert if necessary. At a finer granularity, a multi-level Undo/Redo feature allows the user to repair any mistakes. A sophisticated compare facility, which compares semantic units rather than text, allows the user to see exactly what has changed; an analysis facility tells the user what ought to be changed.

2.1.5. Overcome Previous Difficulties

Our previous software delivery attempts had been plagued by long release cycles, installation difficulties, and problems with patch distribution. Users had to acquire expensive proprietary software and high-end hardware to run the system. This was very unpopular, and substantially reduced the impact of our work by excluding PC and Mac users from the user community. We needed an approach that would overcome all of these problems.

There are a number of possible ways to deliver applications to a user community. In the past, we had always built our software to be as portable as possible, testing it on a number of platforms and with a number of different compilers from different vendors. This approach was necessary because our user community always wanted us to ship source code to them so that they could modify and experiment with our software. The cost of testing and ensuring cross-platform portability proved to be very high. Users would often employ versions of operating systems, platforms or compilers to which we had no access. One way to address this problem would have been to offer only shrink-wrap software releases to our users. This was not a tenable option because of the diversity of platforms in our user community. We simply could not build a "PC-only", or "SUN/OS-only" application. Our new approach of keeping control of the software, and shipping a network service seemed the best way for us to overcome the difficulties of shipping software, while being able to impact a wide user community.

Figure 1. The final design (left) used a row of icons (top) for important or frequently used operations, and pop-up menus preceded by submit buttons (e.g., "File" top left) as labels. Selecting the `?' help command (top center left) takes the user to a page explaining all applicable commands, and with a labeled explanation of the page (right). The command widgets on the help page are real. Selecting one of these widgets will execute the command in the context of the page that the user was on. Tears in the figure elide material extraneous to this discussion. Note: this figure is very wide and might require horizontal scrolling to see the right-hand part of the figure. A slide show examplifying the Help feature can be found here.

2.2. Constraints Imposed by HTML and HTTP

There are only two ways for the browser to transmit information to the server (i.e., the application). Selecting an anchor transmits a request to follow a hypertext link. Pressing a submit button transmits the widget state. Until a submit button is pushed, it is not possible for the server to determine anything about intermediate activities that a user might perform such as typing text into an input field, toggling radio buttons or check boxes, selecting items from menus, moving the mouse, and so on.

The only way for the server to transmit information to a browser is in response to a submit or select action initiated by the user. Moreover, there is a fundamental difference between the type of interaction supported by HTML and the forms of interaction with which we are all accustomed in graphical user interfaces. In GUIs, operations typically take the form of the user selecting an operand or operands through direct manipulation and then applying an operator by means of a menu selection or keyboard accelerator. In HTML-based user interfaces, there is no notion of selecting objects pre se. There are, in effect, two disjoint forms of interaction:

  1. The page that the user is on is viewed as an implicit operand, and therefore the user can select a command to apply to that operand. The user can change the current operand by clicking on an object and going to the page for that object, where the object the user selected will become the current implicit operand for further commands.
  2. The semantics of a simple link can be locally changed so that a particular command is applied to the operand named in the link. This has the consequence of potentially confusing the user because web users are very strongly conditioned to expect that a normal link will take the user to the object selected.
In effect, an HTML interface can allow the user to apply a number of different commands to a single object, or a single command to a one of a number of different objects. Commands that take multiple operands are much harder to implement.

Consequently, it is currently impossible to implement many features of sophisticated user interfaces over the web. In particular, tightly coupled interfaces that provide immediate feedback to the user are not possible. For instance, given an initial menu selection, it is not possible for the application to gray out options that are incompatible with it. Furthermore, there can be no direct manipulation of objects such as one might find in a graphical class browser. Finally, it is not possible for the application to preempt the browser's activity or provide any asynchronous communication. For example, it is not possible to notify the user asynchronously about the results of a background task or remind the user to save work.

Delivering notifications of collaborators' work on shared data is another problem. Since several people simultaneously edit the same ontology, we need to provide some way for users to be made aware of the changes made by others. Today's HTTP makes this difficult because it does not allow a server to send unsolicited notifications to the client. We work around this limitation by presenting pending notifications at the top of the page in a dialog. The notification includes a textual description of the changes being made by collaborators on shared data, and a link is provided that will take the user to the modified object. Within a shared session, users share the same undo history so that a user can undo damage performed by a less enlightened user. A command is also provided to make announcements to users so that they can be forewarned of a change to come and be given a suitable justification. An improvement to the HTTP standard to accommodate asynchronous notifications would be preferred (some are being proposed).

Bandwidth is a key constraint. Each user action (submit or select) causes an entire new page to be transmitted back to the browser over the network. There is no method for the application to cause an incremental update of a portion of the display. Even on high-bandwidth local area networks, transmitting and rendering large pages is time consuming; for distant browsers it becomes the dominant cost.

The application has very little control over appearance. HTML explicitly cedes rendering decisions to browsers. This has many advantages for browsing hypertext documents, but it proves awkward for interface design. There is little control over the location of displayed objects on the finally rendered page. In particular, if a page is too large to fit on a single screen, there is no way of controlling how and to where the browser will scroll the page. This registration problem can be very difficult to work around and frustrating for users (see section 3.4).

The widget set available through HTML's forms capability is extremely restricted. It includes only pop-up menus, single/multiple selection scrolling lists, submit buttons, checkboxes, radio buttons, mapped images, and text type-in widgets (see figures 1 and 2). There is no way to combine either submit button or anchor behavior with a pop-up menu to provide the sort of command selection model that is present in so many user interfaces (e.g., the Macintosh menu bar). There is no way to associate a "right button" menu with items, nor is there a way to provide constraints on selection elements (e.g., toggling "show text files" causes a scrolling list of files to filter out non-text files). There is also no way to include iconic elements in menus or scrollable lists. (See here for a comparison of the widget set under different platforms)

Figure 2. In early designs, radio buttons were used to select an argument (left). Selecting an operation from a pop-up menu and clicking on a submit button (top left) inserted suitable edit widgets into the flow of the page at the selected location (right). A slide show of the actual mockup HTML pages can be found here.

2.2.1. Multiple Browsers

A growing number of web browsers from a variety of institutions and vendors make non-standard extensions to the published protocols. These browsers provide different levels of support for features in the protocols. Fortunately, the protocol provides a means for browsers to identify themselves (although they do not describe their capabilities in a meaningful way), which allows servers such as ours to be sensitive to some of the distinctions between them.

2.2.2. Time-Travel in the Interface

A unique feature of web browsers is that they cache previously seen pages and allow the user to revisit these cached pages without notifying the server. In interactive applications delivered on the web, these "previously seen pages" can represent earlier states in a dialog with the user. As a consequence, the browser allows the user to travel back in time to an earlier interaction state and attempt to execute the commands as they were presented then. Since the state of the data on the server may have changed as a result of the user's interactions with the server, incoherent transactions can result. There are two alternative ways for applications to handle this. Applications must either support time-travel, or they must always reflect the most recent state. For example, suppose that a user engages in a dialog to delete an object and then backs up to a page on which the object is still present. If the user selects the deleted object as represented on that page, the application should either undo the deletion or report an error in a graceful way. Our application chooses the latter approach.

2.3. Choices and Design Principles

The underlying principle of our design was to minimize the cognitive load on the user imposed by the interface [8]. As we worked within the constraints of HTML and HTTP to meet our objectives, we used this principle to guide our design decisions. The steps we took included: minimizing the number of intermediate states in complex command execution, minimizing the number of distinct types of pages, the number of distinct widgets, working to achieve consistent appearance across browsers, but working within the widgets provided by the native window systems. In this section we discuss these issues in more detail.

2.3.1. Minimize Intermediate Pages and Number of Clicks

The restrictions on the widget set force complex interactions to be broken down into a sequence of simple ones punctuated by submit actions and the transmission of intermediate pages. To simplify the execution of complex commands, we chose (1) to minimize the number of actions that the user must perform, and (2) to minimize the number of pages presented during the course of the interaction. It is important to minimize these because of the cognitive effort required to parse and understand a new page, because displaying a new page makes it change registration (see section 3.4), and because transmitting and rendering a page may take several seconds.

The desire to minimize the number of clicks and intermediate pages has some consequences. Because we want to minimize the number of clicks that a user performs, we are inclined to make pages richer (and potentially more confusing) to a user. Our application consists of the display and editing of a hierarchy of objects; classes exist within ontologies, classes have slots (attributes), and those slots can themselves have facets (attributes of attributes). We could have chosen to present a different page for each slot and for each facet in any given class. Instead, we display all of the slots and facets of a class on a single page. A user can therefore edit a facet value directly on a class without going through any intermediate pages. This design helps to satisfy our goal of minimizing the number of clicks and intermediate pages, but at the expense of making the pages larger and more complex. The user is presented with considerably more information than may be of interest, and the user is more likely to have to scroll in order to see what is of interest.

2.3.2. Edit-In-Place Metaphor

In order to minimize the number of different-looking pages to which the user would be exposed, we decided that the editing environment should look as much like the browsing environment as possible. This is natural in our application, because even when a user is creating new objects, most of a user's work is browsing. We preserve the browsing environment's look and feel by inserting edit widgets into the flow of the HTML page (see figures 2 and 3) in a manner similar to the protoTextExpando widget in the Newton user interface [12]. An example of this insertion of edit widgets into the flow of the HTML page can be found here in the middle of the worked example.

2.3.3. Pages Represent Objects

A page was to be a representation of a specific object. This meant that commands on the menu bar would implicitly apply to the underlying objects which may be nested (e.g., an attribute of a class in an ontology.) Commands applicable to all of these may appear on the menu bar.

2.3.4. Five Types of Interface Widgets

We decided that in the normal course of events the user should be exposed to the minimal number of distinct widgets. The final design includes only five types of widgets (see section 3.2).

2.3.5. Consistency Across Browsers

We wanted our user interface to work in the same way across all platforms and browsers. This would minimize training and documentation problems. We explicitly chose to limit use of undocumented or non-portable extensions provided by different browsers. One significant exception to this decision is HTML tables, which provide a much better way to present tabulated information than is otherwise possible. We use HTML tables when communicating with a Netscape browser [13] and use PREformatted text (a fixed-width font display mode) for other browsers.

We explicitly decided to support multiple browsers. Some user interfaces on the web are almost unusable without using Netscape. We did not want to limit our user community in this way, and so preserved a consistent look and feel across platforms and browsers.

2.3.6. Native Window System's Submit Buttons

Many developers choose to exercise artistic control over the look and feel of their web pages by using custom bitmapped graphics for buttons instead of the native look and feel that the web browsers provide. Consequently, their web pages look more uniform across platforms, but users must learn to recognize buttons anew for each of these idiosyncratic applications. Furthermore, when this mapped graphic approach is used, the browser is not able to provide feedback to the user about which regions of the bitmap will result in commands being executed.

In contrast, we chose to use the native window system's submit buttons for our interface. Our application was going to be complex enough without the user having to relearn what a button is supposed to look like.

The constraint of supporting naïve users meant that we could not allow any user interface tricks such as having extremely stylized icons that cause differing behavior depending on where on the icon the user clicks. While such approaches allow very terse and dense displays that efficiently take advantage of the available screen real-estate and bandwidth, they would be difficult for members of our target community to understand and learn.

3. Evolution of Design

As we saw in the previous section, the design for our user interface was influenced both by a number of hard constraints imposed by our need to deliver our application over the web, and a number of design choices that reflected our beliefs about the usage patterns of our system and our prospective user community. In this section we describe the evolution of our design and our software, and show how we changed our user interface as we learned more about the application and received user feedback. One of the significant advantages of our implementation approach - a central server and standard browsers, coupled with a dynamic, rapid-prototyping implementation infrastructure - was that we could rapidly receive user feedback and introduce changes in response, often within a few minutes or hours. This meant that as soon as the server was established, our design progressed very rapidly. In this section we describe several of the significant events in this evolutionary process.

3.1. Early Design and Mockup

We were fortunate to start this project with a preexisting substrate. Earlier work had enhanced Ontolingua [3], our ontology development tool so that ontologies could be compiled into static hyperwebs (see here for more on this process and examples). These hyperwebs displayed the concepts in the ontology with one concept per page. Our first step, therefore was to take pages of hypertext generated by this compilation process and manually edit them so as to mock up the editing interface. This process of developing mockups lasted about two weeks and went through multiple iterations, experimenting with different ways to handle the perceived problems of having a simple user interface that was nevertheless powerful. Early designs experimented with putting edit widgets next to each of the potentially modifiable objects in the page being displayed. Selecting one of these edit widgets would take you to a different mockup page with, for example, a text widget allowing the user to edit the selected value. These mockups can be seen here. The whole mockup process was performed by editing these HTML files to refine the design.

We tried several different approaches to provide the functionality of a right button command menu, which is not supported by HTML. For example, in one mockup, there was a radio button in front of each editable object, and at the top of the page was a pop-up menu of operations to be applied to the object selected with the radio button (figure 2). A "Do It" submit button caused the execution of the selected operation. This method requires three different widget selections which involved mouse travel from the selected object back to the top of the page and often required the user to scroll the viewport. This would have been burdensome on our users.

We addressed this problem by using a single intermediate page for edit operations, and by limiting the expressiveness of the user interface - we do not allow the user to execute all conceivably legal operations at any given point. We eventually settled on a design in which a small edit widget would be placed next to any editable object. Selecting this widget would take the user to a page just like the current page, only with suitable edit widgets replacing the value that was selected, and allowing the user to select between a number of possible edit options.

In our application, it is necessary to be able both to create new objects (e.g., classes) and also to add objects to existing objects (e.g., add a property or value to a given object). Finding a good way to represent this proved tricky, and we experimented with several methods. For example, we tried using a "dummy" entry for values, so that for every list of values there would be an extra one at the beginning (or end) in italics that was a place holder for a new value to be added (this is an example of this design mockup). This was found to be confusing, and was soon dropped in favor of the design described in the next section.

3.2. Early Implementation

Moving on from our mockups, our initial implementation of the editing environment attempted to implement the design that we had mocked up as closely as possible, but we rapidly ran into difficulties. For example, in the mockups, quite by chance, we had selected an object which had only one value for each of the attributes being displayed. This encouraged us to position a single edit widget in front of the set of attribute values in order to elicit and/or modify all of the values simultaneously in one text widget. We soon discovered that the more general case of there being several attribute values was very common and the single text widget approach was confusing to our users. Problems with eliciting multiple values in a single text widget were compounded by our desire to edit values in context, which made us want to minimize the size of the text widget. Values were sometimes scrolled out of the user's viewport, which resulted in erroneous editing operations and much confusion. Early user feedback quickly caused us to change our design in favor of eliciting or editing only one attribute value at a time. This had the side-effect of increasing screen clutter by putting individual edit widgets in front of every editable value (figure 3 left).

The next problem that arose was that users were confused by the methods for creating and adding objects and values. They often added values that were illegal or non-existent objects. The number of possible legal values for attributes in the system is typically too large to enumerate explicitly. Because of this, we developed a sophisticated, context-dependent completion facility, which space prevents us from describing here.

After a few iterations we ended up with a design which we have broadly kept since this early stage (see figure 3). In this design, we distinguish between five different types of widget:

  1. the simple hyperlink, which always takes the user to a page showing the selected object.
  2. edit widgets, represented by pencil icons that allow the user to edit an existing value and addition widgets, which are represented by icons such as . Only one type of object can be added at each location; the type is indicated by the icon.
  3. a submit button and pop-up menu combination for commands.
  4. text widget and submit button combinations for value elicitation, and
  5. tool bar icons presenting important, general commands.

Figure 3. The final version uses edit widgets in front of all editable objects, and "+" widgets wherever an addition is possible (left). In this example, we show editing the Slot-Value-Type facet value of Thesis.University from Institution to University. Selecting an edit pencil inserts the necessary widgets to elicit or modify the value in context (middle). The user has entered University instead of Institution. The user can remove screen clutter by inhibiting all edit widgets (right). Here is a detailed worked example of an editing session using the ontology editor, showing a number of the features of the editor.

Although we went to considerable effort to make the user interface clear and intuitive, it was still novel in many ways. To familiarize new users with the meaning of the various icons and edit widgets they might see, we introduced a "Welcome" page which displays the icon images together with a brief explanation. Users can suppress this page once they are familiar with its contents.

By this point, we were able to edit values and create new objects in our system, but we were unable to save our changes. Our user interface mockups had focused exclusively on the different ways to edit objects in the system - they completely neglected the sorts of operations that are typically found on the "File" menu of a normal user interface. This presented us with a problem. We already had a row of buttons at the top of the page that would provoke the creation of new objects. When we added the options that were necessary for typical file menu operations we found that we had a glut of buttons. The number of buttons would only increase as the system became more sophisticated.

At this point, we had to make a significant compromise. Again, because HTML does not support pop-up submit buttons, we were unable to implement the obvious and familiar behavior of a menu bar. The only "correct" model for command menus in HTML is the exhaustive enumeration of the commands as submit buttons. This was untenable because of the number of commands we needed to support (typically around 40 per page). As an alternative, we partitioned the commands into broad classes and put the commands on menus. In front of each menu we placed the name of the menu as a submit button (see figure 1, top left). This meant that the user had to select an option from the menu and then click on the submit button to execute the selected operation. This is non-standard, but we found that our users got used to it fairly quickly, probably because we went to significant effort to make sure that the system would always put the most likely choice as the default option on the menu. Thus, a single pointer operation often suffices.

Because we could not predict whether our users would find the factoring of commands onto menus with submit buttons described above reasonable, we introduced a user preferences mechanism that allowed the user to control, among other things, the look and feel of these menu commands. In practice, most users ended up accepting our default setting for the command menu's look and feel. The desire for menu flexibility was the impetus for us to introduce a user preferences facility, but this feature has become ever more important in our system. Users connect to our application from all around the world from sites with widely differing quality of network connectivity. Consequently it is very important to support options that let the user trade prettiness or verbosity for bandwidth.

The issue of how much power to give to the user came up with the introduction of this command menu model. Our system is non-modal in the sense that it is always theoretically legal to jump to (say) a class creation dialog from the middle of a different object creation dialog. By default, we choose to hide this fact from users in order to simplify the appearance of the user interface. However, power users resent such restrictions, and so we have had to add extra preferences to allow our power users full access to all applicable commands, irrespective of their current context.

3.3. Problems of Scale

By the time the system had reached this level of sophistication, we had made our application available to the public, and around one hundred users had tried it out. We quickly found that users were unable to visualize large ontologies with hundreds or thousands of concepts. This is a problem analogous to browsing a flat file system with hundreds or thousands of files. We considered using a graphical rendering of the hierarchy [10], but this had several problems: transmitting large images is too slow; it is not possible to position the image so that a particular object is visible; the browser cannot tell which portions of the image are links, and the browser may not be able to display graphical data. We chose to provide a hierarchical browsing mechanism with the same sort of triangular open/close widgets that are found in the Macintosh file system. The system uses a heuristic method to compute the appropriate initial set of objects to display in the "open" state (figure 4).

Figure 4. The hierarchical class browser shows large graphs of objects in a compact form. Triangular widgets open and close subgraphs. "Focus" widgets move the selected object to the root of the displayed tree.

We found that however hard we might try, our application always produced pages that were multiple screens in height. Consequently, we replicated the menu bar at the bottom of the page so that the user could scroll to the nearest end of the document in order to select one of these more global commands.

User feedback has caused us to spend more effort on displaying large ontologies. We have recently addressed this by factoring pages showing large ontologies automatically. We have also introduced a method of focusing the hierarchical browsing tool onto subgraphs of the class lattice, and for using this same hierarchical browsing technique to look at attributes as well as classes and instances.

3.4. Breakdown of the Edit-in-place Model

Our early design criteria had called for trying to preserve the illusion that there were only a few different types of pages: one for ontologies, one for the library, and one for frame objects. Edit widgets would be inserted in-place to preserve the look and feel of these pages (see figure 3). When it came to object creation, we did not, of course, have an object to display. When the user selected a creation operation, we presented the user with a fake page representing an object of the type being created, with a text widget into which the user could enter the new object's name. This preserved a uniform look and feel for all of our pages. We rapidly discovered that this approach confused our users. Their cognitive model of object creation was sufficiently different from normal editing and browsing operations that being presented with a fake page for the object to be created was confusing. The users clearly liked to think of the creation pages as being (pseudo) modal dialogs, and didn't want to view the creation page as an ersatz, incomplete object.

Another problem with the edit-in-place model of interaction is that HTML and HTTP give no effective control over viewport positioning. This means that when the user selects an edit operation, we have no choice but to refresh the whole page (unlike a more tightly-coupled user interface in which the system might push existing text aside in order to make room for the edit widgets). Although it is possible to tell the browser where to scroll to on the new page, this is very coarse-grained control. Browsers differ significantly in their scrolling behavior, and this typically results in a loss of registration of the user's viewport, and therefore the loss of the user's cognitive focus.

In practice we suspect that it might be better not to use this edit-in-place model, but rather to use simple pages that give the illusion of modal dialogs. This is an open design question and needs further investigation. Registration of the display is only reliable when the whole HTML page is less than one screen in height. Because browsers cannot inform the server of the browser's window size or exact viewport position within a document, this problem cannot be solved in general. Furthermore, our application typically generates HTML pages more than one screen high.

3.5. Observations on User Interaction

We have conducted one informal email survey of our users and have collected over 1500 in-context comments and bug reports. Together with informal observation of local users, we have observed several surprising characteristics of system usage.

3.5.1. Reluctance to Click

We have noticed that users are reluctant to experiment freely within the application. This becomes an issue when users are unable to understand an icon or command. They do not try it to see what it will do. This surprised us. We had expected that users would experiment freely because the network connection isolates them from most problems. There are several possible explanations for their behavior: They may be avoiding wasting their time. Some browsers are difficult to interrupt if an address is not well formed, a server refuses to respond or responds slowly, or if a large document is transmitted. They may be trying to protect their work. Many web-based applications are brittle and crash unexpectedly. Few applications provide as many safeguards as ours does against irrecoverable damage. They may also be trying to protect the work of other users by following only understood paths. It would be interesting to find out why users are so reluctant to experiment, since this could have significant impact on the design of networked application user interfaces if this behavior proved to be widespread.

3.5.2. Logging Out

We have observed that our users have a powerful desire to be able to log out of our system. Because a user's connection with our application lasts only as long as each individual request from the browser - typically only a second or two - and because the user could walk away, leaving the browser at any time - we have had to engineer the system so that logging out is not necessary. The system has a set of timeouts and defaults that allow it to recover quiescent resources. However, we have noticed that users feel a need to log out, even when they are told explicitly that it is not necessary. We have therefore provided a command to give the user the illusion of logging out.

3.5.3. The Usage of User Preferences

It is often assumed that preferences in applications are not of significant utility because few users actually change them. If we look at active users, whom we define as those who have executed at least 50 commands, we find that some 41% of our users have changed at least one preference. Figure 5 plots the distribution of the number preferences modified against the number of requests performed by each user. There are 47 preference variables in the system of which 42 have been modified by at least one user (here is an example page showing the preferences dialog). Some preferences have been modified by only one user, one has been set by 47 users. From the graph we can see that although power users are changing more preferences, as one would expect, they are changing a focused set of preferences. We conclude from this that although there is a fairly large number of preferences, the number is not wildly in excess of the number needed to represent the degree of customization required by our users.

Figure 5. The average number of preference variables set by each user plotted against the total number of non-trivial requests made by each user to our server

If we look at the actual preferences that are being set, we see that a number of the selections clearly represent a particular user's personal preference for some particular look and feel, other preference selections are clustered around, for example, a number of preferences that allow the user to control the bandwidth used in communicating with our server. Indeed, we have found that the issue of bandwidth is sufficiently important to our users that we label any preference that might impact bandwidth with a splash graphic.

4. The Future

The web is an ever-changing medium, and both the technology and standards are advancing very rapidly. We must therefore consider what we would do (or would have done) if Java or some similarly capable remote scripting facility were to be reliable and powerful enough to use for our application. Certainly, had Java been ready for serious use a year ago we would have been very tempted to use it to get around some of the severe constraints of HTML. In this section, we detail some of the issues surrounding the use of client-side applets, and we then enumerate some of the simple changes that could be made to HTML to make this sort of application much easier and better.

Please note that although in this section we refer to Java, the reader should treat this as a generic reference for some facility that allows the portable specification of client-side applets. At present, it would appear that Java will win this war, but this is by no means certain.

4.1. Java and Client-side Scripting

4.2. HTML: Problems and Solutions

HTML could be extended to provide better support for more sophisticated applications, making user interaction more satisfactory and implementation cheaper and simpler. Please note that although we show some examples of how one might like to represent some of these ideas, some of these examples violate the current lexis and syntax rules of HTML. To address all of these issues, a proper rewrite of HTML would be required. Sadly, we are probably stuck with all of the warts of HTML.
          <A HREF="some-default.html"
             ALTERNATIVES="red.html",
                          "green.html",
                          "blue.html"
             ALTERNATIVE-PRINTED=
               "Red",
               "Green",
               "Blue">
          Color
          </A>
          
This would insert a normal link on the word "Color". On some browsers, using the right mouse button would pop-up a menu with the three options "Red", "Green" and "Blue". Selecting one of these options would take the user to red.html, green.html, or blue.html respectively. A different link color or underline could be used to indicate anchors that have alternatives. In text-based and mouseless browsers, a keystroke would be used to pop up the menu.
          <INPUT NAME="My Button"
                 TYPE="URL"
                 VALUE="URL-for-my-button.html">
This would insert a button labeled "My Button". Selecting the button would have the same effect as one would expect from clicking on a normal link, taking the user to the page denoted by "URL-for-my-button.html".
          <INPUT TYPE="submit" NAME="My Button"
            VALUE="my-button"
            ACTION="/cgi-bin/foo#scroll-to-here">
This would insert a button labeled "My Button" in the page. Selecting this button would override the action attribute URL associated with the form, but would still transmit the values associated with all of the other widgets in the form. One would modify the specification of HTML so that scroll positions in forms would be handled correctly. The correct semantics would be for the browser to strip out the scroll position before sending the form, and scrolling as appropriate upon receipt of the resulting page. Supplying
          <INPUT TYPE="SUBMIT"
                 NAME="My Button"
                 VALUE="my-button"
                 ACTION="#scroll-to-here">
would result in the browser scrolling to the anchor named "scroll-to-here" in the page resulting from the URL specified in the action attribute of the form itself.
          Scroll-position: <<name>>[+/-<<lines>>]
where <<name>> indicates the closest named anchor to the home position of the user's viewport, +/- indicates a "+" or "-" character, and <<nlines>> would be the number of lines from that anchor to the home position of the viewport. Obviously, because HTML cedes formatting decisions to the browser, this would still be only an approximation to the viewport's position, but it would still be useful. An application could increase the resolution required simply by inserting more named anchors.
          Scroll-to: <<name>>[+/-<<lines>>]
header to the browser, these redirections would be obviated.
          <TEXTAREA NAME="my-textarea"
             scrollbarpositions=<<positions>>>
             ....
          </TEXTAREA>
where
          <<positions>> ::= <<position>> |
                          <<position>>, <<positions>>
          <<position>>::= [vertical|horizontal]
                          = [left|right|top|
                             bottom|none]
would allow the user to specify the positions and absence of scroll bars. For some applications it may be desirable to have scroll bars on all four sides of a viewport.
          <INPUT TYPE="submit" 
                 LOCATION="menubar" 
                 MENU="Ontology Editor|Create"
                 NAME="Class" 
                 VALUE="create-class">
This would insert a command called "Class" on the "Create" submenu of a menu item called "Ontology Editor" that would be added to the browser's menu bar. Selecting this command would have the effect of performing a submit on the name called "Class". In this example, a transition to a submenu is shown with a "|" character.

Clearly, one would want this facility to support the TYPE=URL attribute option mentioned above as well.

          <A HREF="item-1235897" DOCUMENTATION="Edit Class">
          <INPUT TYPE="SUBMIT" 
                 DOCUMENTATION="Delete this class and all of its subclasses"
                 NAME="Delete">
          <SELECT.....>
              <OPTION DOCUMENTATION="The color red in RGB values">
                Red
          </SELECT>
          <CANONICAL-URL "some-URL">
This would tell the browser that whatever it might have thought the URL for the current page was, the real URL is in fact "some-URL".
          <IMG SRC="some-picture.gif" GRAYED-OUT>
A browser could easily overlay a gray stipple pattern on the image to be grayed out, or could gray the color values in the color map of the image to achieve the required effect.
Similarly, it would be useful to be able to make menu options unselectable/grayed out:
          <OPTION UNSELECTABLE>Some option
This would have the obvious benefits of alerting the user of the existence of inapplicable commands and preserving registration.
          <A HREF="foo.html">
            <IMG SRC="graphic.gif" 
                 BORDER=0
                 MARK-IF-VISITED>
          </A>
and to prevent a link from being marked as visited:
          <A HREF="foo.html" NEVER-VISITED>
             ...
          </A>
Browsers should be sensitive to the Expires: header field so that a link would no longer be marked as visited once its expiration date had been passed. This is not a matter of HTML specification, but is rather an issue of good client implementation.
          <INPUT TYPE="SUBMIT" NAME="Do it" 
                 KEY="D">
which would bind Option/Alt-D to the submit button named "Do it". Clearly, some canonical representation would be needed for keys such as Space, Enter and Return. The case of binding the Enter or Return key is an interesting special case of binding the default selection. Window systems typically have a way to indicate which selection will be made or operation performed if the user hits the Enter key. It would be useful if the submit button or link bound to the Enter key would be labeled in the normal way for the native window system as being the default selection.
          <DEFINE NAME=1>
           <IMG SRC="/image/gadget.gif" BORDER=0>
          </DEFINE>
then one could have the client replace all instances of <1> with <IMG SRC= "/images/gadget.gif" BORDER=0>. This could greatly compress the HTML generated by a complex application.

5. Conclusions

We have shown how we were able to deliver a sophisticated, yet intuitive, interactive application as a network service. An off-the-shelf web browser provides the user's interaction medium. Leveraging standard browsers attracts a large user community, improves the rate of user acceptance, avoids software installation and distribution problems, and dramatically reduces turnaround time for software development.

The key contribution of this paper is to describe the constraints imposed on user interface design by this interaction medium, outline the tradeoffs in this design space, and motivate the choices we made in order to deliver our application over the web. We further outlined the lessons we learned and the design changes we made as the interface evolved in response to user feedback.

These issues are crucial because the growing popularity of the web ensures that this form of software delivery will become ever more wide-spread.

This application is available on the web at:

http://www-ksl-svc.stanford.edu:5915/

Acknowledgments

The authors gratefully acknowledge the support of the following funding agencies: NASA Ames Research Center under contract NCC2-537, ARPA and NASA/ARC under contract NAG2-581 (ARPA order 8607), and CommerceNet under contract CN-1094 (TRP #F33615-94-4413). Numerous people in our user community were both influential and helpful in the development of this application, particularly Wanda Pratt, Rupert Brauch, and Richard Fikes.

References

1
Farquhar, A, Fikes, R, Pratt, W, and Rice, J. Collaborative Ontology Construction for Information Integration. Technical Report KSL-95-63, Stanford University, Knowledge Systems Laboratory. 1995

2
Fikes, R., Cutkosky, M., Gruber, T., & van Baalen, J. Knowledge Sharing Technology Project Overview. Technical Report KSL 91-71, Stanford University, Knowledge Systems Laboratory. 1991

3
Gruber, T. R. A Translation Approach to Portable Ontology Specifications. Knowledge Acquisition, 5(2), 199-220. 1993

4
Gruber, T., and Gautier, P. Machine-generated Explanations of Engineering Models: A compositional modeling approach. Proceedings of the 13th International Joint Conference on Artificial Intelligence, Chambéry, France, 1502-1508. Knowledge Systems Laboratory. 1993.

5
Gruber, T., and Olsen, G. An ontology for engineering mathematics. In Jon Doyle, Piero Torasso, & Erik Sandewall, Ed., Fourth International Conference on Principles of Knowledge Representation and Reasoning, Gustav Stresemann Institut, Bonn, Germany, Morgan Kaufmann, 1994.

6
Gruber, T., Vemuri, S, and Rice, J. Model-based Virtual Document Generation. Technical Report KSL-95-80 (this is a hypertext paper best viewed here), Stanford University, Knowledge Systems Laboratory. 1995

Model-based Virtual Document Generation. Technical Report KSL-95-80 (this is a hypertext paper best viewed here), Stanford University, Knowledge Systems Laboratory. 1995

7
Grudin, J. Groupware and Cooperative Work: Problems and Prospects, in The Art of Human-Computer Interface Design. Laurel, B., Ed. Addison-Wesley Publishing Company, Inc., Reading, Massachusetts, 1990, pp. 171-185.

8
Gygi, K. Recognizing the Symptoms of Hypertext... and What to do About it, in Laurel, B., ed., The Art of Human-Computer Interface Design. Addison-Wesley Publishing Company, Inc., Reading, Massachusetts, 1990, pp. 279-287.

9
Knowledge Sharing Technology Project. http://www-ksl.stanford.edu/kst/kst-overview.html

10
Lamping, J, Rao, R, Pirolli, P: A Focus+Context Technique Based on Hyperbolic Geometry for Visualizing Large Hierarchies. In CHI '95 Human Factors in Computing Systems. 1995. New York: ACM Press.

11
Marshall C., and Irish P. Guided tours and On-Line Presentations: How Authors Make Existing Hypertext Intelligible for Readers. Proceedings ACM Hypertext'89. Pittsburgh, PA, USA, 5-8 November 1989. ACM Press 1989.

12
Newton Programmers Guide. Apple Computer Inc. Cupertino CA. 1993

13
Netscape Navigator Handbook, Netscape Communications Corporation, Mountain View, California. Also available on the world wide web at: http://home.netscape.com/eng/mozilla/1.1/handbook/

14
Sukaviriya S, and Foley J. Coupling A UI Framework with Automatic Generation of Context-Sensitive Animated Help, Proceedings ACM UIST'90 (User Interface Software and Technology), Snowbird, Utah. October 3-5 1990. 152-166 ACM Press 1990

15
Trigg, R. Guided tours and tabletops: tools for communicating in a hypertext environment. ACM Trans. Office Info. Syst. 6, 4, October 1988, 398-414.

16
World Wide Web Consortium. http://www.w3.org/


An example of the static HTML output produced by the compilation of an Ontolingua ontology into a hyperweb. Much of the formatting of these pages was preserved when we implemented the ontology editor. In the next slide , we go from the ontology library (ontologies were referred to as theories in this old example) to the Bibliographic-data ontology.

[Up] [Next]


Library of Ontologies Table of Contents


Reference Documents

These documents are indexed so that references to formal terms point to their definitions. They serve as introductions and reference manuals for the ontologies.

List of Ontologies

Below are the ontologies listed in alphabetical order, with the date of last modification.
  3d-Tensor-Quantities         1 July 1994
  Abstract-Algebra              2 May 1994
  Basic-Matrix-Algebra         5 July 1994
  Bibliographic-Data     27 September 1994
  Cml                    22 September 1994
  Component-Assemblies    7 September 1994
  Components-With-Constraints 30 July 1994
  Dme-Cml                16 September 1994
  Frame-Ontology              31 July 1994
  Jat-Generic                29 April 1994
  Job-Assignment-Task         29 June 1993
  Kif-Extensions            5 October 1994
  Kif-Lists                    6 June 1994
  Kif-Meta                    10 July 1994
  Kif-Numbers                 8 April 1994
  Kif-Relations               8 April 1994
  Kif-Sets                8 September 1994
  Mace-Domain                 10 July 1994
  Mechanical-Components       10 July 1994
  Parametric-Constraints      31 July 1994
  Physical-Quantities         31 July 1994
  Quantity-Spaces             31 July 1994
  Scalar-Quantities            1 July 1994
  Simple-Geometry              5 July 1994
  Slot-Constraint-Sugar        5 July 1994
  Standard-Dimensions    21 September 1994
  Standard-Units         21 September 1994
  Tensor-Quantities      21 September 1994
  Thermal-System             2 August 1994
  Unary-Scalar-Functions       5 July 1994
  User-Theory     No source file available
  Vt-Design                   30 July 1994
  Vt-Domain              27 September 1994
  Vt-Example               3 November 1993

Inclusion Lattice of Ontologies

Below is the lattice of ontologies in this library. Each ontology defines a set of formal terms. Ontologies include (import from) other ontologies. Terms in an included ontology are in the namespace of the ontologies that include it. In the lattice below, an ontology includes those ontologies that it is indented under.
    Kif-Sets
       Kif-Extensions
          Frame-Ontology
             Jat-Generic
                Job-Assignment-Task
             Basic-Matrix-Algebra
                Tensor-Quantities
                   3d-Tensor-Quantities
                      Simple-Geometry
                         Mechanical-Components
                            Mace-Domain
             Abstract-Algebra
                Physical-Quantities
                   Standard-Dimensions
                      Vt-Design
                         Vt-Domain
                            Vt-Example
                      Unary-Scalar-Functions
                         Mace-Domain
                         Cml
                            Thermal-System
                            Dme-Cml
                               Thermal-System
                      Standard-Units
                      Simple-Geometry ...
                   Scalar-Quantities
                      Vt-Design ...
                      Unary-Scalar-Functions ...
                      Tensor-Quantities ...
                   Quantity-Spaces
                      Simple-Geometry ...
             Parametric-Constraints
                Components-With-Constraints
                   Vt-Design ...
                   Mace-Domain
             Component-Assemblies
                Mechanical-Components ...
                Components-With-Constraints ...
                Dme-Cml ...
             Bibliographic-Data
             Slot-Constraint-Sugar
                Bibliographic-Data
       Kif-Meta
          Parametric-Constraints ...
       Kif-Relations
          Frame-Ontology ...
          Kif-Extensions ...
    Kif-Numbers
       Kif-Extensions ...
       Kif-Lists
          Kif-Extensions ...
          Kif-Meta ...
          Kif-Relations ...
    User-Theory


This file was generated by Ontolingua on Friday, 7 October 1994


This data structure inspector was the first use we made of web browsers to provide an interactive interface to a non-trivial running system. In this case we are using the web browser as a window system for an application that knows about how to display data structures within the system in a number of different perspectives. The particular advantage of this approach is that the browser provides a very reliable substrate for an inspector tool. We do not have to be concerned that bugs in the application will crash out the window system.

In this case we have typed in the expression (ol:find-ontology 'ol-user::bibliographic-data) which will cause the inspector to look at the data structure used to encode the ontology called Bibliographic-data. When we click on the button we inspect the ontology in its default perspective.

[Up] [Next]


[KSL logo]Stanford KSL Inspector

Inspect something new by typing it into the "Name" box. For example, type in "FOO" to inspect the symbol 'FOO. You may also type in an expression to be evaluated in the EVAL box.

If you select one of the perspectives in the menu then whatever you choose to inspect will be inspected in that perspective (if applicable). Failing that the best perspective will be selected.

Name
Eval
Perspective

Inspector by: Rice. Some perspectives by Axf

Commands: Help, Apropos, Describe applicable perspectives, Set *!, Set Parameters

[Up] DME user interface showing the model of the Space Shuttle's Reaction Control System

Interactive graphics showing the system being modelled

Hypertext interface to explanation subsystem


In this example, we are trying to decide what command to use in order to create a new object, possibly a class or subclass of the current class (Thesis). Notice how a strip of icons captures frequently used commands, and a number of pop-up menus following submit buttons factor out commands. The user has set his user preferences so as to suppress the borders on images and so as to minimize the number of menus shown. This is in contrast to the bordered images shown in figure 1. In this example, the user doesn't understand the Create command, and so clicks on the Help (help) button....
[Up] [Next]
HomeMake CommentPreferencesSave all and quit sessionReloadOntology LibraryParent OntologySuppress edit gadgetsCan't UndoDictionaryDocumentationFind NameHelp
:
:
:

! Class Thesis


Notes for Thesis:

     +Note 

Slots on class Thesis:

Arity: ! 1
+Facet
Documentation:
! An official report on a bout of graduate work for which one receives a degree, published by the university. Never mind that some fields make a big deal about the difference between dissertations and theses. From the bibliographic perspective, they are both of the same family.
+Value
+Facet
Exhaustive-Subclass-Partition: ! {Doctoral-Thesis, Masters-Thesis} +Value
+Facet
Instance-Of: ! Class, Go Relation, Go Set +Value
+Facet
Subclass-Of:
! Document, Go Individual, Go Individual-Thing, Go Thing +Value
+Facet
Superclass-Of: ! Doctoral-Thesis, ! Masters-Thesis +Value
+Facet
+Class Slot


Slots on instances of Thesis:

Has-Author: +Value
Slot-Cardinality: ! 1
+Facet
Organization-Of: +Value
Slot-Cardinality: ! 1
Slot-Value-Type: ! University +Value
+Facet
Publication-Date-Of: +Value
Slot-Cardinality: ! 1
+Facet
Title-Of: +Value
Slot-Cardinality: ! 1
+Facet
+Instance Slot

Implication Axioms for Thesis:

! (=> (Thesis ?X)
       (And (Value-Cardinality ?X Has-Author 1)
            (Value-Cardinality ?X Title-Of 1)
            (Value-Cardinality ?X Publication-Date-Of 1)
            (Value-Cardinality ?X Organization-Of 1)
            (Value-Type ?X Organization-Of University)))

+Axiom

Other Related Axioms for Thesis:

 Go (Subclass-Partition Document
                         (Setof Book
                                Periodical-Publication
                                Proceedings
                                Thesis
                                Technical-Report
                                Miscellaneous-Publication))


:
:
:
HomeMake CommentPreferencesSave all and quit sessionReloadOntology LibraryParent OntologySuppress edit gadgetsCan't UndoDictionaryDocumentationFind NameHelp

[Up] Widgets using different browsers

In this example we show the differences in appearance of the widget set supported by HTML when viewed by different browsers. It is obvious from this that without substantial vendor and platform customization it is not possible to get much control over the appearance of the rendered document. Note in particular that even within the products of a single browser supplier (Netscape) the widgets are vertically justified differently between the X and Macintosh platforms.

The HTML code that generated these images can be found here.

Netscape 1.1N under X

Netscape 1.1N on the Mac

Mosaic 2.6 under X

Lynx 2.3.7 under X


This is one of the mockups used in the design of the ontology editor. In this mockup scenario the user decides to edit the facet value "Institution" of the Slot-Value-Type facet of the Thesis.University slot. Notice that although there are links on almost everything on the page, the only one that actually works is the submit button in the form that takes the designer to the next scene in the mockup storyline. In this case, it will be the edit-in-place form for changing this facet value. ....
[Up] [Next]

Class THESIS


Slots on Class:

*Documentation:
An official report on a bout of graduate work for which one receives a degree, published by the university. Never mind that some fields make a big deal about the difference between dissertations and theses. From the bibliographic perspective, they are both of the same family.
Subclass-Of: Document
Exhaustive-Subclass-Partition: {Masters-thesis, Doctoral-thesis}

*Slots on Instances:

Doc.Author:
Slot-Cardinality: 1
Doc.Publication-Date:
Slot-Cardinality: 1
Doc.Title:
Slot-Cardinality: 1
*Thesis.University:
Slot-Cardinality: 1
*Slot-Value-Type: Institution

Notes:

Defined in theory: Bibliographic-data
Source code: bibliography.lisp
*What about theses published as technical reports?
If it is cited as a TR, it is a TR. One can imagine adding a cross-reference field to references that points to associated documents or other references.
What about theses published as technical reports?
If it is cited as a TR, it is a TR. One can imagine adding a cross-reference field to references that points to associated documents or other references.


We are now on the same page we were just on except the editor is now inserting editing command widgets. In this example we're going to change the superclass of Thesis from its current value of Document to a more specific class, Technical-Document. To do this, we click on the edit pencil ! in front of the value Document of the Subclass-Of slot. This slot says that Thesis is a subclass of Document, i.e. that Document is the Superclass of Thesis. The other values of this slot shown in italics are inherited values.

[Back] [Up] [Next]


HomeMake CommentPreferencesSave all and quit sessionReloadOntology LibraryParent OntologySuppress edit gadgetsCan't UndoDictionaryDocumentationFind NameHelp
:
:
:

! Class Thesis


Notes for Thesis:

     +Note 

Slots on class Thesis:

Arity: ! 1
+Facet
Documentation:
! An official report on a bout of graduate work for which one receives a degree, published by the university. Never mind that some fields make a big deal about the difference between dissertations and theses. From the bibliographic perspective, they are both of the same family.
+Value
+Facet
Exhaustive-Subclass-Partition: ! {Doctoral-Thesis, Masters-Thesis} +Value
+Facet
Instance-Of: ! Class, Go Relation, Go Set +Value
+Facet
Subclass-Of:
! Document, Go Individual, Go Individual-Thing, Go Thing +Value
+Facet
Superclass-Of: ! Doctoral-Thesis, ! Masters-Thesis +Value
+Facet
+Class Slot


Slots on instances of Thesis:

Has-Author: +Value
Slot-Cardinality: ! 1
+Facet
Organization-Of: +Value
Slot-Cardinality: ! 1
Slot-Value-Type: ! University +Value
+Facet
Publication-Date-Of: +Value
Slot-Cardinality: ! 1
+Facet
Title-Of: +Value
Slot-Cardinality: ! 1
+Facet
+Instance Slot

Implication Axioms for Thesis:

! (=> (Thesis ?X)
       (And (Value-Cardinality ?X Has-Author 1)
            (Value-Cardinality ?X Title-Of 1)
            (Value-Cardinality ?X Publication-Date-Of 1)
            (Value-Cardinality ?X Organization-Of 1)
            (Value-Type ?X Organization-Of University)))

+Axiom

Other Related Axioms for Thesis:

 Go (Subclass-Partition Document
                         (Setof Book
                                Periodical-Publication
                                Proceedings
                                Thesis
                                Technical-Report
                                Miscellaneous-Publication))


:
:
:
HomeMake CommentPreferencesSave all and quit sessionReloadOntology LibraryParent OntologySuppress edit gadgetsCan't UndoDictionaryDocumentationFind NameHelp

Ontology editor mockups

The following are a number of different mockups for the ontology editor shown in chronological order of their development. Because these are mockups, not all of the links point to anything meaningful. For the sake of this demonstration, we have post-processed the mockups so that all of the links should point either to another page of the mockup or to this null page. If you click on this link, your browser should mark as visited all of the inoperative links. All other links should then point to some part of the mockup.

Class THESIS


Slots on Class:

Documentation:
An official report on a bout of graduate work for which one receives a degree, published by the university. Never mind that some fields make a big deal about the difference between dissertations and theses. From the bibliographic perspective, they are both of the same family.
Subclass-Of: Document
Exhaustive-Subclass-Partition: { Masters-thesis, Doctoral-thesis}

Slots on Instances:

<New Slot>: New Value
New Value
Doc.Author:
Slot-Cardinality: 1
Doc.Publication-Date:
Slot-Cardinality: 1
Doc.Title:
Slot-Cardinality: 1
Thesis.University:
Slot-Cardinality: 1
Slot-Value-Type: University

Axioms:


Notes:

What about theses published as technical reports?
If it is cited as a TR, it is a TR. One can imagine adding a cross-reference field to references that points to associated documents or other references.
What about theses published as technical reports?
If it is cited as a TR, it is a TR. One can imagine adding a cross-reference field to references that points to associated documents or other references.

This is the start page of the ontology editor. You get here after you have logged in and selected the ontology editor from the set of available services. Clicking on the "Start ontology editor" link takes the user to the table of contents of the ontology library.

We start our ontology editing session by going to the library so that we can load the ontology that we're going to edit. We will make an edit to an ontology called Documents-2 and will then show some of the other features provided by the ontology editor. The Documents-2 ontology contains definitions of terms that might be useful in describing documents. This ontology might be useful, for example, in the definition of the database schema for a bibliographic database.

[Up] [Next]


KSL logo Welcome to the Stanford KSL Ontology Editor

Home Start ontology editor

The Ontology Editor is a tool that supports distributed, collaborative editing, browsing and creation of Ontolingua ontologies.

If you are a new user, check out the guided tour.

Help is available on all pages by means of the "?" (help) button.

Please note the meanings of the following icons:

HomeMake CommentPreferencesSave all and quit sessionReloadOntology LibraryParent OntologySuppress edit gadgetsUndoRedoNotifyDictionaryDocumentationEMail Bug ReportFind NameHelp
Selecting Home icon will return you to the KSL network services home page where you can start other services or alter characteristics of your current session. The other icons are all menu bar commands. Use the Help ("?") button on the menu bars on which these icons appear to find out what they mean. Menu bar help
!
! is the Edit icon. Selecting it will allow you to edit the entry next to the icon.
+
+ is the Add item icon. It allows you to add in an object that is already known to the system. For example you would use the Add Slot button to add a slot to a class. Creation of new slots must be done by pushing on the appropriate Create button.
^
^ is the Insert Found Word tag. This option appears whenever possibilities are found by the numerous Find commands. Selecting this tag allows you to take the object immediately following it and insert it at the relevant place in the typein box that is prompting you. Extensive help is provided whenever you encounter the Find command. Click here for a worked example
...
Ellipses indicate that there are more possibilities resulting from executing a Find command or there are more slot or facet values available than are shown. Selecting the "..." will show more options or values. Selecting Find All will show all possibilities.
V
V indicates in the class browser that a class is "open" and then all of its direct subclasses (and instances if selected by user preference) are visible.
>
> indicates in the class browser that a class is "closed" and that display of the class's subclasses (and instances if selected by user preference) has been suppressed.
F
F tells the class browser to focus in on the class in front of the icon.
Go
Go is a button that will take you to the place that defined the value or object following the icon.

Ontology editor and 98% of the images by: James Rice. Guided tour and documentation by Wanda Pratt. Original look-and-feel design by: Tom Gruber, Philippe Piernot. Current design by: Adam Farquhar, Wanda Pratt, James Rice. Query interface by: Rupert Brauch, Wanda Pratt. Help from Rupert Brauch, Bob Engelmore, Richard Fikes, John Gennari, Asuncion Gomez-Perez, Todd W. Neller, Colin P. Williams

This an example of the current preferences dialog within the ontology editor. The dialog, like everything else in the ontology editor, is dynamically generated from the set of preference variables. Negligible programming effort has been spent on the interface to the preferences. This is clearly an area in need of improvement.

[Up]



Home User Preferences



Ontology Editor Preferences

Browser, instances:
Show instances in the ontology browser:
Button, GO:
Show GO buttons:
Button, Preferences:
Show an icon on the tool bar that takes you to this preferences dialogue:
Button, Save:
Show a save all icon on the menu bar. Once you save, you are given the option of quitting the session:
Dictionary, URL:
A URL to take you to a useful dictionary server. If not supplied, no dictionary button will be shown:
EMail destination:
What to do when an EMail command is selected:
Ellipses, Find:
Number of terms to display with the "Find" command before going into ellipses [Positive integer]:
Ellipses, axioms:
Total number of any given type of axiom to display before going into ellipses [Positive integer or ALL]:
Ellipses, axioms, other related:
Total number of any given type of "Other Related" axiom (axioms defined on other frames that reference the current frame) to display before going into ellipses [Positive integer or ALL]:
Ellipses, facet values, instance:
Total number of instance slot facet values to display before going into ellipses [Positive integer or ALL]:
Ellipses, facet values, own:
Total number of own slot facet values to display before going into ellipses [Positive integer or ALL]:
Ellipses, grow expression:
The expression (of x) to evaluate to determine a larger ellipsis margin when you click on a "...". For example, you might say (* x 2), which would mean double the number of values shown, or (+ x 5), which would mean show five more [Expression mentioning X]:
Ellipses, slot values, instance:
Total number of instance slot values to display before going into ellipses [Positive integer or ALL]:
Ellipses, slot values, own:
Total number of own slot values to display before going into ellipses [Positive integer or ALL]:
Find, all ontologies:
When executing a find command, set the default value of the "Search all ontologies" checkbox to true:
Help, put page description at top:
When true causes the page description help to be put at the top of the help page, before the description of the menu items etc.:
Library, show accessible ontologies as header:
When true causes ontology library page to print out with a list of the accessible (writable or loadable) ontologies above the alphabetical list of ontologies:
Library, show only session-accessible ontologies in header:
When true, and you have selected "Library, show accessible ontologies as header" also as true, causes ontology library header to include only those ontologies that are accessible to the group that owns the current session:
Load, log definitions as they load:
When true the ontology loader to print out the name of each definition as it loads it as the result of the Import Ontology or Import Definitions command:
Menu bar, show on bottom of page too:
BAUD When true causes the ontology editor to show a second menu bar at the bottom of the page as well. Users with low bandwidth may choose to unset this option:
Menus, always show icon strip:
Always show the icon strip, even on "modal" pages, such as class creation forms:
Menus, commands, always show:
Always show the menu commands, even on "modal" pages, such as class creation forms:
Menus, full:
Allow menu items from higher levels. For example, when editing a frame this will allow you access to Ontology-level commands too:
Menus, newlines:
Insert a newline for each command menu (easier to read, but takes up more screen space):
Menus, submenus:
Group menu commands into submenus. If not selected, each menu bar command will be shown as a button:
Ontologies, inclusion lattice:
Print including/included ontologies as a lattice:
Ontologies, show a synopsis by default:
BAUD When true causes the ontology editor to show ontologies as a synopsis of the content, rather than displaying the whole content. Users with low bandwidth may choose to set this option:
Ontology, what counts as large:
BAUD Number of definnitions in an ontology before it is considered to be "large" for the purpose of displaying it in the editor [Positive integer]:
Power user:
Enable power user mode (don't use this unless you really understand things like the difference between ontology "use" and "inclusion". This exposes a lot of internal stuff to Ontolingua that is unimportant to the average user, and may just confuse you):
Pretty print:
When files are writen out by the ontology editor should they be pretty printed?
Pretty printing is slower and is probably undesirable if you do not have access to the file system.
Definitions are always pretty printed to EMail:
Printing/reading, infixify:
When set, this parameter causes the user interface to print and read expressions, such as KIF sentences or arithmetic expressions, as infix expressions:
Translation target:
The default target for Ontolingua translations:
Values, number on same line as slot name:
The number of slot (or facet) values that can be printed out on the same line as the slot (or facet) name before the user interface throws a newline and indents. The wider your display, the larger this number can be. If this parameter it set too high, lines will wrap and will be harder to read [Positive integer]:
Values, string length on a line:
The length that a string type slot value is allowed to be before forcing the user interface to throw a newline and go into blockquote mode [Positive integer]:
Vertical space, be miserly:
When set, this parameter causes the user interface to be as miserly as possible with its use of vertical space. This is a useful parameter to set if you use a browser such as Netscape, which is very wasteful of space:


General network services preferences

Group search order:
The order in which to search groups for files [Smaller is better, numbers must be unique]:
JUST-ME: UNIVERSE:
Group, default for sessions:
The default value in the group selection menu on the session selection page:
Image, formats:
Supported image formats (sometimes your browser doesn't tell us. Sometimes it lies):

Image, prettiness:
[BAUD] Prefered image to get if there's a choice:
Image, size limit:
[BAUD] Transmit only images smaller than this size (if you are working with a slow machine or slow connection, use this to prevent the transmission of large bitmapped images where possible. This feature allows you still to get all of the edit gadgets that are represented as small images of around 1600 bytes) [Positive integer or ALL]:
Images, gratuitous:
[BAUD] Inhibit gratuitous banner graphics:
Images, show unbordered icons NEW! :
BAUD When true causes the system to display some icons without borders and transparent backgrounds on those browsers that support unbordered images. This results in a cleaner looking image, but causes you not to be able to see that an image is anchored:
Mail, CC me too:
CCs you by default on all bug reports and comments you send:
Menus, icons to show NEW! :
Allows you to select which icons to show or suppress in menu bars. Commands appear on menu bars only when they are applicable, so selecting a command in this preference does not guarantee that the icon will appear, because the command in question might not be applicable, or you might not have sufficient privilege to access it, but deselecting any command guarantees that the command will not appear

Service, go straight to:
BAUD If a service is selected here, you will be taken directly to the service from the session selection page, without going through the home page. This is useful either if you only ever use one service, or you want to make an account more turnkey. This option only works if URL redirection works on your browser:
Services, jump past start page:
BAUD Lets you jump past the start page for services accessed from the home page. This is useful if you are an experienced user and don't need any introductions:
URL Redirection:
Allow URL Redirection:



This is the way that ontologies were presented in the statically generated hyperwebs. In the next slide we see the definition of the class Thesis.

[Back] [Up] [Next]


Theory BIBLIOGRAPHIC-DATA

Theory documentation:

The bibliographic-data ontology defines the terms used for describing bibliographic references. This theory defines the basic class for reference objects and the types (classes) for the data objects that appear in references, such as authors and titles. Specific databases will use schemata that associate references with various combinations of data objects, usually as fields in a record. This ontology is intended to provide the basic types from which a specific database schema might be defined.

Notes:


Cross Reference Report:

Theories included by Bibliographic-Data:

  Frame-Ontology
  Slot-Constraint-Sugar

No theories include Bibliographic-Data.

70 classes defined:

    Biblio-Text
       Biblio-Name
          Title
          Keyword
          City-Address
          Agent-Name
          Author-Name
          Publisher-Name
       Biblio-Nl-Text
    Biblio-Thing
       Agent
          Person
          Author
          Organization
             Publisher
             University
       Conference
       Timepoint
          Calendar-Year
          Calendar-Date
          Universal-Time-Spec
       Document
          Book
             Edited-Book
          Periodical-Publication
             Journal
             Magazine
             Newspaper
          Proceedings
          Thesis
             Masters-Thesis
             Doctoral-Thesis
          Technical-Report
          Miscellaneous-Publication
             Technical-Manual
             Computer-Program
             Artwork
             Cartographic-Map
             Multimedia-Document
       Reference
          Publication-Reference
             Book-Reference
                Edited-Book-Reference
             Book-Section-Reference
             Article-Reference
                Journal-Article-Reference
                Magazine-Article-Reference
                Newspaper-Article-Reference
             Proceedings-Paper-Reference
             Thesis-Reference
                Doctoral-Thesis-Reference
                Masters-Thesis-Reference
             Technical-Report-Reference
             Misc-Publication-Reference
                Technical-Manual-Reference
                Computer-Program-Reference
                Cartographic-Map-Reference
                Artwork-Reference
                Multimedia-Document-Reference
             Inherits-Author-From-Document
                Book-Reference ...
                Thesis-Reference ...
                Technical-Report-Reference
                Technical-Manual-Reference
                Computer-Program-Reference
                Cartographic-Map-Reference
                Artwork-Reference
                Multimedia-Document-Reference
             Inherits-Publisher-From-Document
                Book-Publication-Data-Constraint
                   Book-Reference ...
                   Book-Section-Reference
             Inherits-Year-From-Document
                Proceedings-Paper-Reference
                Thesis-Reference ...
                Technical-Report-Reference
                Technical-Manual-Reference
                Cartographic-Map-Reference
                Artwork-Reference
                Multimedia-Document-Reference
                Book-Publication-Data-Constraint ...
             Inherits-Title-From-Document
                Book-Reference ...
                Thesis-Reference ...
                Technical-Report-Reference
                Technical-Manual-Reference
                Computer-Program-Reference
                Cartographic-Map-Reference
                Artwork-Reference
                Multimedia-Document-Reference
             Book-Publication-Data-Constraint ...
          Non-Publication-Reference
             Personal-Communication-Reference
             Generic-Unpublished-Reference
    Day-Number
    Month-Name
    Year-Number

19 relations defined:

  Author.Name
  Doc.Author
  Doc.Author-Name
  Doc.Editor
  Doc.Series-Editor
  Doc.Translator
  Penname
  Publisher.Address
  Ref.Address
  Ref.Author
  Ref.Editor
  Ref.Keywords
  Ref.Labels
  Ref.Notes
  Ref.Secondary-Author
  Ref.Secondary-Title
  Ref.Series-Editor
  Ref.Tertiary-Author
  Ref.Translator

41 functions defined:

  Agent.Name
  Conf.Address
  Conf.Date
  Conf.Name
  Conf.Organization
  Doc.Author.Name
  Doc.Conference
  Doc.Edition
  Doc.Institution
  Doc.Number-Of-Pages
  Doc.Publication-Date
  Doc.Publisher
  Doc.Series-Title
  Doc.Title
  Organization.Name
  Publisher.Name
  Ref.Abstract
  Ref.Booktitle
  Ref.Day
  Ref.Document
  Ref.Edition
  Ref.Issue
  Ref.Magazine-Name
  Ref.Month
  Ref.Newspaper-Name
  Ref.Number-Of-Volumes
  Ref.Organization
  Ref.Pages
  Ref.Periodical
  Ref.Publisher
  Ref.Report-Number
  Ref.Title
  Ref.Type-Of-Work
  Ref.Volume
  Ref.Year
  Thesis.University
  Timepoint.Day
  Timepoint.Minutes
  Timepoint.Month
  Timepoint.Seconds
  Timepoint.Year

12 instances defined:

  April
  August
  December
  February
  January
  July
  June
  March
  May
  November
  October
  September

The following constants were used from included theories:

All constants that were mentioned were defined.


This document was generated using Ontolingua.
Formatting and translation code was written by
François Gerbaux and Tom Gruber

Page not available

This page is not available. This is just a slide show, not the real thing. The real thing can be found here.
We are now looking at the ontology in terms of the definitions in that ontology. At the bottom of this page you will find a set of alternative perspectives each of which shows this ontology in a different way. The perspectives we have captured in this slide show are: Default, GFP KB, Name, Source file, XRef Ontology

[Back] [Up]


Ontolingua ontology ONTOLINGUA-USER::BIBLIOGRAPHIC-DATA

    #<Class-Definition Article-Reference 272411E>,
    #<Class-Definition Artwork-Reference 2723DFE>,
    #<Class-Definition Author-Name 27240BE>,
    #<Function-Definition Author.Name-Of 2723DEE>,
    #<Class-Definition Biblio-Name 2723EFE>,
    #<Class-Definition Biblio-Nl-Text 272414E>,
    #<Class-Definition Biblio-Text 2723FFE>,
    #<Class-Definition Book-Publication-Data-Constraint 272412E>,
    #<Class-Definition Book-Reference 2723E4E>,
    #<Class-Definition Book-Section-Reference 272419E>,
    #<Class-Definition Cartographic-Map-Reference 272403E>,
    #<Class-Definition City-Address 272415E>,
    #<Class-Definition Computer-Program-Reference 2723F6E>,
    #<Function-Definition Conf.Address 272409E>,
    #<Function-Definition Conf.Date 272417E>,
    #<Function-Definition Conf.Organization 2723F0E>,
    #<Class-Definition Conference 2723E5E>,
    #<Function-Definition Conference-Of augmented in Bibliographic-Data 272422E>,
    #<Class-Definition Doctoral-Thesis-Reference 27240FE>,
    #<Class-Definition Edited-Book-Reference 27241FE>,
    #<Function-Definition Edition-Of 2723E7E>,
    #<Class-Definition Generic-Unpublished-Reference 27241EE>,
    #<Relation-Definition Has-Author-Name 2723F5E>,
    #<Relation-Definition Has-Name augmented in Bibliographic-Data 27240DE>,
    #<Relation-Definition Has-Penname 27241CE>,
    #<Relation-Definition Has-Textual-Representation 272404E>,
    #<Class-Definition Inherits-Author-From-Document 2723F7E>,
    #<Class-Definition Inherits-Publisher-From-Document 272428E>,
    #<Class-Definition Inherits-Title-From-Document 272429E>,
    #<Class-Definition Inherits-Year-From-Document 27240CE>,
    #<Class-Definition Journal-Article-Reference 272425E>,
    #<Class-Definition Keyword 2723E0E>,
    #<Class-Definition Magazine-Article-Reference 272418E>,
    #<Class-Definition Masters-Thesis-Reference 2723ECE>,
    #<Class-Definition Misc-Publication-Reference 272413E>,
    #<Class-Definition Multimedia-Document-Reference 27241DE>,
    #<Function-Definition Name augmented in Bibliographic-Data 272401E>,
    #<Class-Definition Newspaper-Article-Reference 2723DDE>,
    #<Class-Definition Non-Publication-Reference 272402E>,
    #<Class-Definition Personal-Communication-Reference 272424E>,
    #<Class-Definition Proceedings augmented in Bibliographic-Data 2723FAE>,
    #<Class-Definition Proceedings-Paper-Reference 272423E>,
    #<Class-Definition Publication-Reference 2723E2E>,
    #<Class-Definition Publisher-Name 2723EBE>,
    #<Relation-Definition Publisher.Address 272426E>,
    #<Function-Definition Ref.Abstract 2723E6E>,
    #<Relation-Definition Ref.Address 2723F4E>,
    #<Relation-Definition Ref.Author 27240AE>,
    #<Function-Definition Ref.Booktitle 272420E>,
    #<Function-Definition Ref.Day 2723F3E>,
    #<Function-Definition Ref.Document 27241BE>,
    #<Function-Definition Ref.Edition 2723FBE>,
    #<Relation-Definition Ref.Editor 2723DCE>,
    #<Function-Definition Ref.Issue 2723F8E>,
    #<Relation-Definition Ref.Keywords 2723EAE>,
    #<Relation-Definition Ref.Labels 2723E9E>,
    #<Function-Definition Ref.Magazine-Name 2723FDE>,
    #<Function-Definition Ref.Month 272408E>,
    #<Function-Definition Ref.Newspaper-Name 272410E>,
    #<Relation-Definition Ref.Notes 2723E8E>,
    #<Function-Definition Ref.Number-Of-Volumes 27240EE>,
    #<Function-Definition Ref.Organization 272407E>,
    #<Function-Definition Ref.Pages 272406E>,
    #<Function-Definition Ref.Periodical 272421E>,
    #<Function-Definition Ref.Publisher 272400E>,
    #<Function-Definition Ref.Report-Number 2723F1E>,
    #<Relation-Definition Ref.Secondary-Author 27241AE>,
    #<Relation-Definition Ref.Secondary-Title 272405E>,
    #<Relation-Definition Ref.Series-Editor 2723E1E>,
    #<Relation-Definition Ref.Tertiary-Author 272427E>,
    #<Relation-Definition Ref.Translator 2723DBE>,
    #<Function-Definition Ref.Type-Of-Work 272416E>,
    #<Function-Definition Ref.Volume 2723E3E>,
    #<Function-Definition Ref.Year 2723EEE>,
    #<Class-Definition Reference 2723F2E>,
    #<Class-Definition Technical-Manual-Reference 2723F9E>,
    #<Class-Definition Technical-Report-Reference 2723FCE>,
    #<Class-Definition Thesis-Reference 2723FEE>,
    #<Class-Definition Title augmented in Bibliographic-Data 2723EDE>

Other perspectives: Default, GFP KB, Name, Ontolingua definition object, Ontolingua definitions, Ontolingua word, Source file, XRef Ontology
Commands: Help, Describe applicable perspectives, History, Inspect New, Set *!, Set Parameters
This is an example of the way that the help page appears. We get an annotated explanation of the gadgets on the page and an explanation of what each of the commands does. The user reads the documentation and decides that the Create Subclass command is appropriate. Selecting this command from within the help page executes the command as if it had been invoked on the original page....
[Back] [Up] [Next]

Help (all possible commands)

General help on the current display:


Help on the available menu bar commands:

Home
Takes you to the network services home page.
Make Comment
Prompts you to type in a comment which is then mailed to the developers.
Preferences
Gives you a form that allows you to edit the available user preference options.
(Save all and quit session):
Saves all of the unsaved ontologies either to the group that they came from if their source is know, or to your current group if they are newly created.
Reload (Reload):
Reloads the current page. This is useful if you have edited something, and you use the back key, window history, or GO menu to go back in time. This command will let you reload the page (if things have changed) without telling the browser to reload all of the images too.
(Ontology Library):
Takes you to page that lists the contents of the ontology library.
(Parent Ontology):
Takes you to page for the ontology in which the current frame was defined.
(Suppress edit gadgets):
Toggles the read-only/read-write status of this page so that all of the edit gadgets disappear. Worked example.
Can't Undo (Can't Undo):
Says you can't undo the last operation.
Dictionary (Dictionary):
Takes you to the dictionary server that you specified in your user preferences.
(Documentation):
Takes you to the home page for the ontology editor's documentation. This includes manuals and a guided tour.
(EMail Bug Report):
Gives you a form that will allow you to send a bug report.
(Find Name):
Prompts you for a name to look for in all of the ontologies that are currently loaded into the ontology editor. Any name will match this search, whether it is the name of a function, relation, instance, class, or axiom. If there are multiple possible matches, a page showing these possibilities will be shown. If there is only one possible match, you will be taken to the page showing that definition.

Click here for a worked example. In any Find command you can enter a wildcarded pattern of things to find. Context-specific filtering occurs so that the only matches that are found are those that are appropriate to the context. Thus, if you are finding a class name, only existing class names will be found as matches. Searches are case independent. The Find facility is a superset of what you already may be accustomed to in "completion" features in other systems. The pattern may contain:

  • A sequence of alphabetics, which are required to match to the string in question.
  • A multi-character wildcard *, which will match to zero or more characters.
  • A single character wildcard ?, which will match to exactly one character.
  • Escaped wildcard characters: \* or \?.
There is no limit to the number of wildcard characters that can be supplied in a pattern. Searches all make initial substring matches, so you will get "completion" behavior simply by typing in an initial substring.

Some examples:

Hello
Will match to any word beginning with the string "HELLO"
*Hello
Will match to any word containing the string "HELLO". This is equivalent to *Hello*.
Hel?o
Will match to any word beginning with the string "HEL", having any character after that and then having "O" after it.

If the Find command finds more possibilities than the threshold that you specified in your user preferences, ellipses ("...") will be displayed and a new button labeled Find All will be displayed. If you click on the Find All button, all possible matches will be found and displayed, however many there may be. If you click on the ellipsis mark, the number of items displayed will grow by a number specified by your user preferences. If you click on a caret button, the word following the caret will be inserted into the typein box.

(Help):
Shows help for the current page. Any available buttons on the current page will be explained as well as general help being given on the contents of the current page.
: :
EMails the current frame. The address to which the frame is EMailed is determined by your user preferences. The default will prompt you for an address. You can also set your preferences so that definitions will always be mailed to you directly. See also the Save [Frame] to File command. The definition that is mailed to you is not the page that you see, it is the Ontolingua source code definition of the frame. This definition will conspicuously not include any references to inherited values, slots or facets.
: :
Saves the current frame to a file in the ontology editor's frame library. You can load such a saved frame with the Load Definition command. See also the EMail [*] command. The file created by the save command will be authored (owned) by you and have the group ownership that you specify in the dialogue.
: :
Saves the current frame to a file. You can load such a saved frame with the Load Frame command. See also the EMail [Frame] command.
: :
Gives you a blank form in which you can create a new slot (binary function or relation) on the current class to add to the current ontology. You are prompted for the name of the new slot, its documentation string and its domain and range class(es). The domain class defaults to the current class. If you want simultaneously to define an inverse slot then you must supply a name for the inverse slot and its documentation in the appropriate boxes.
Slots can be either Functions or Relations. If you want the slot to be single-valued, i.e. a function, then you should click in the "Single Valued" checkbox. The name for the new slot (and inverse slot) must be unique in the current ontology and its included ontologies. Supplying multiple domain classes will define a slot with a disjunctive domain. Supplying multiple range classes will specify a disjunctive range.
Click here for a worked example.
: :
Gives you a blank form in which you can create a new instance of the current class to add to the current ontology. You are prompted for the name of the new instance, its documentation string and the classes of which the new instance is to be a direct instance (defaulting to the current class). You can provide multiple classes separated by whitespace if you want the instance to be a direct instance of multiple classes. The name for the new instance must be unique in the current ontology and its included ontologies. Here is a worked example.
: :
Gives you a blank form in which you can create a new subclass of the current class to add to the current ontology. You are prompted for the name of the new class, its documentation string and its direct superclasses (defaulting to just the current class). The name for the new class must be unique in the current ontology and its included ontologies. Click here for a worked example.
: :
Shows you the translation of the current definition into a target system (such as KIF, LOOM, Epikit, or CLIPS) that you specify.
: :
Shows a browser for the current frame in the current ontology that lets you open and close subtrees of the class/ instance hierarchy accessible in this ontology.
: :
Deletes the current frame from the current ontology. References to this frame in other frames and axioms are not removed so you may need to do some fixing up when you delete a frame. If there are references to the frame you have just deleted, the now-deleted frame name will appear in the list of undefined symbols when you execute the "Analyze Ontology" command.
: :
Analyzes the current frame, showing any warnings that Ontolingua generates when loading the definition and any other interesting debugging hints that it can give you. All slots, slot values, facet, and facet values are checked to make sure that they conform to the constraints that apply (eg. domain, range, slot value type and cardinality constraints).
: :
Shows all of the ontologies that can see the current definition.
: :
Shows all of the other definitions that reference the current definition.
: :
Gives you a dialogue that allows you to create a copy of the current frame. The form prompts you for a name for the new frame and for the ontology into which it is to be put. Only ontologies to which you have write access will be shown in the ontology menu. It defaults to the current ontology. The name of the new frame must be different from any existing definition name within the ontologies included by the ontology into which the copy is to be placed. Use the FIND button to make sure that the name is unique.


HTML Widgets

Text widgets


Buttons

Radio 1 Radio 2 Checkbox 1 Checkbox 2

Pop up menu


Single choice menus


Multiple choice menus


This is the design of the form that will let the user edit the facet value.
[Up] [Back]

Class THESIS


Slots on Class:

Documentation:
An official report on a bout of graduate work for which one receives a degree, published by the university. Never mind that some fields make a big deal about the difference between dissertations and theses. From the bibliographic perspective, they are both of the same family.
Subclass-Of: Document
Exhaustive-Subclass-Partition: {Masters-thesis, Doctoral-thesis}

Slots on Instances:

Doc.Author:
Slot-Cardinality: 1
Doc.Publication-Date:
Slot-Cardinality: 1
Doc.Title:
Slot-Cardinality: 1
Thesis.University:
:
Slot-Cardinality: 1
Slot-Value-Type: University

Notes:

Defined in theory: Bibliographic-data
Source code: bibliography.lisp
What about theses published as technical reports?
If it is cited as a TR, it is a TR. One can imagine adding a cross-reference field to references that points to associated documents or other references.
What about theses published as technical reports?
If it is cited as a TR, it is a TR. One can imagine adding a cross-reference field to references that points to associated documents or other references.

or

Now that we've clicked on the edit pencil for the slot value, we get a text widget prompting for a new value. Let us pretend that we aren't sure what value to put in here instead of Document, but we think that it has something to do with "technical" things. We type in "TE" and click on . This will find the legal completions for the initial substring "TE" that are consistent with the applicable constraints, i.e. that we must enter a class name.

[Back] [Up] [Next]


HomeMake CommentPreferencesSave all and quit sessionReloadOntology LibraryParent OntologySuppress edit gadgetsCan't UndoDictionaryDocumentationFind NameHelp

Class Thesis


Notes for Thesis:


Slots on class Thesis:

Arity: 1
Documentation:
An official report on a bout of graduate work for which one receives a degree, published by the university. Never mind that some fields make a big deal about the difference between dissertations and theses. From the bibliographic perspective, they are both of the same family.
Exhaustive-Subclass-Partition: {Doctoral-Thesis, Masters-Thesis}
Instance-Of: Class, Relation, Set
Subclass-Of:

New value:

Search all ontologies
, Individual, Individual-Thing, Thing
Superclass-Of: Doctoral-Thesis, Masters-Thesis


Slots on instances of Thesis:

Has-Author:
Slot-Cardinality: 1
Organization-Of:
Slot-Cardinality: 1
Slot-Value-Type: University
Publication-Date-Of:
Slot-Cardinality: 1
Title-Of:
Slot-Cardinality: 1

Implication Axioms for Thesis:

(=> (Thesis ?X)
    (And (Value-Cardinality ?X Has-Author 1)
         (Value-Cardinality ?X Title-Of 1)
         (Value-Cardinality ?X Publication-Date-Of 1)
         (Value-Cardinality ?X Organization-Of 1)
         (Value-Type ?X Organization-Of University)))


Other Related Axioms for Thesis:

(Subclass-Partition Document
                    (Setof Book
                           Periodical-Publication
                           Proceedings
                           Thesis
                           Technical-Report
                           Miscellaneous-Publication))



HomeMake CommentPreferencesSave all and quit sessionReloadOntology LibraryParent OntologySuppress edit gadgetsCan't UndoDictionaryDocumentationFind NameHelp

We clicked on the class Thesis and are now on a page describing this class. By default, the editor presents the user with a fairly uncluttered view. This helps the user when just browsing around. However, to get beyond just browsing we click on the Allow edit gadgets button that enables editing commands.

[Back] [Up] [Next]


HomeMake CommentPreferencesSave all and quit sessionReloadOntology LibraryParent OntologyAllow edit gadgetsCan't UndoDictionaryDocumentationFind NameHelp
:
:

Class Thesis


Notes for Thesis:


Slots on class Thesis:

Arity: 1
Documentation:
An official report on a bout of graduate work for which one receives a degree, published by the university. Never mind that some fields make a big deal about the difference between dissertations and theses. From the bibliographic perspective, they are both of the same family.
Exhaustive-Subclass-Partition: {Doctoral-Thesis, Masters-Thesis}
Instance-Of: Class, Go Relation, Go Set
Subclass-Of:
Document, Go Individual, Go Individual-Thing, Go Thing
Superclass-Of: Doctoral-Thesis, Masters-Thesis


Slots on instances of Thesis:

Has-Author:
Slot-Cardinality: 1
Organization-Of:
Slot-Cardinality: 1
Slot-Value-Type: University
Publication-Date-Of:
Slot-Cardinality: 1
Title-Of:
Slot-Cardinality: 1

Implication Axioms for Thesis:

(=> (Thesis ?X)
    (And (Value-Cardinality ?X Has-Author 1)
         (Value-Cardinality ?X Title-Of 1)
         (Value-Cardinality ?X Publication-Date-Of 1)
         (Value-Cardinality ?X Organization-Of 1)
         (Value-Type ?X Organization-Of University)))


Other Related Axioms for Thesis:

 Go (Subclass-Partition Document
                         (Setof Book
                                Periodical-Publication
                                Proceedings
                                Thesis
                                Technical-Report
                                Miscellaneous-Publication))


:
:
HomeMake CommentPreferencesSave all and quit sessionReloadOntology LibraryParent OntologyAllow edit gadgetsCan't UndoDictionaryDocumentationFind NameHelp

Page not available

This page is not available.

All of the non-functioning links in the mockups should now be marked as visited. Go here to get back up to the top-level of the mockups.


[Add Slot on Instances] [Add Slot on Class] [Add Axiom]    [Add Note]
[Create Instance]       [Rename Class]      [Delete Class] [Help]

Class THESIS


Slots on Class:

Documentation:
An official report on a bout of graduate work for which one receives a degree, published by the university. Never mind that some fields make a big deal about the difference between dissertations and theses. From the bibliographic perspective, they are both of the same family.
Subclass-Of: Document
Exhaustive-Subclass-Partition: {Masters-thesis, Doctoral-thesis}

Slots on Instances:

Doc.Author:
Slot-Cardinality: 1
Doc.Publication-Date:
Slot-Cardinality: 1
Doc.Title:
Slot-Cardinality: 1
Thesis.University:
Slot-Cardinality: 1
Slot-Value-Type: University

Notes:

What about theses published as technical reports?
If it is cited as a TR, it is a TR. One can imagine adding a cross-reference field to references that points to associated documents or other references.
What about theses published as technical reports?
If it is cited as a TR, it is a TR. One can imagine adding a cross-reference field to references that points to associated documents or other references.

[Add Slot on Instances] [Add Slot on Class] [Add Axiom]    [Add Note]
[Create Instance]       [Rename Class]      [Delete Class] [Help]

Class THESIS

[Create Instance] [Rename Class] [Delete Class] [Help]

Slots on Class:

[Add Slot on Class] [Help]
Documentation:
An official report on a bout of graduate work for which one receives a degree, published by the university. Never mind that some fields make a big deal about the difference between dissertations and theses. From the bibliographic perspective, they are both of the same family.
Subclass-Of: Document
Exhaustive-Subclass-Partition: {Masters-thesis, Doctoral-thesis}

Slots on Instances:

[Add Slot on Instances] [Help]
Doc.Author:
Slot-Cardinality: 1
Doc.Publication-Date:
Slot-Cardinality: 1
Doc.Title:
Slot-Cardinality: 1
Thesis.University:
Slot-Cardinality: 1
Slot-Value-Type: University

Axioms:

[Add Axiom] [Help]

Notes:

[Add Note] [Help]
What about theses published as technical reports?
If it is cited as a TR, it is a TR. One can imagine adding a cross-reference field to references that points to associated documents or other references.
What about theses published as technical reports?
If it is cited as a TR, it is a TR. One can imagine adding a cross-reference field to references that points to associated documents or other references.

[Add Slot on Instances] [Add Slot on Class] [Add Axiom]    [Add Note]
[Create Instance]       [Rename Class]      [Delete Class] [Help]

Class THESIS


Slots on Class:

Documentation:
An official report on a bout of graduate work for which one receives a degree, published by the university. Never mind that some fields make a big deal about the difference between dissertations and theses. From the bibliographic perspective, they are both of the same family.
Subclass-Of: Document
Exhaustive-Subclass-Partition: { Masters-thesis, Doctoral-thesis}

Slots on Instances:

Doc.Author: _
Slot-Cardinality: 1
Doc.Publication-Date:
Slot-Cardinality: 1
Doc.Title:
Slot-Cardinality: 1
Thesis.University:
Slot-Cardinality: 1
Slot-Value-Type: University

Notes:

What about theses published as technical reports?
If it is cited as a TR, it is a TR. One can imagine adding a cross-reference field to references that points to associated documents or other references.
What about theses published as technical reports?
If it is cited as a TR, it is a TR. One can imagine adding a cross-reference field to references that points to associated documents or other references.

[Add Slot on Instances] [Add Slot on Class] [Add Axiom]    [Add Note]
[Create Instance]       [Rename Class]      [Delete Class] [Help]


Class THESIS


Slots on Class:

*Documentation:
An official report on a bout of graduate work for which one receives a degree, published by the university. Never mind that some fields make a big deal about the difference between dissertations and theses. From the bibliographic perspective, they are both of the same family.
Subclass-Of: Document
Exhaustive-Subclass-Partition: {Masters-thesis, Doctoral-thesis}

*Slots on Instances:

Doc.Author:
Slot-Cardinality: 1
Doc.Publication-Date:
Slot-Cardinality: 1
Doc.Title:
Slot-Cardinality: 1
*Thesis.University:
Slot-Cardinality: 1
*Slot-Value-Type: University

Notes:

Defined in theory: Bibliographic-data
Source code: bibliography.lisp
*What about theses published as technical reports?
If it is cited as a TR, it is a TR. One can imagine adding a cross-reference field to references that points to associated documents or other references.
What about theses published as technical reports?
If it is cited as a TR, it is a TR. One can imagine adding a cross-reference field to references that points to associated documents or other references.


Class THESIS


Slots on Class:

Documentation:
[Help]
Subclass-Of: Document
Exhaustive-Subclass-Partition: {Masters-thesis, Doctoral-thesis}

Slots on Instances:

Doc.Author:
Slot-Cardinality: 1
Doc.Publication-Date:
Slot-Cardinality: 1
Doc.Title:
Slot-Cardinality: 1
Thesis.University:
Slot-Cardinality: 1
Slot-Value-Type: University

Notes:

What about theses published as technical reports?
If it is cited as a TR, it is a TR. One can imagine adding a cross-reference field to references that points to associated documents or other references.
What about theses published as technical reports?
If it is cited as a TR, it is a TR. One can imagine adding a cross-reference field to references that points to associated documents or other references.

Class THESIS


Slots on Class:

Documentation:
An official report on a bout of graduate work for which one receives a degree, published by the university. Never mind that some fields make a big deal about the difference between dissertations and theses. From the bibliographic perspective, they are both of the same family.
Subclass-Of: Document
Exhaustive-Subclass-Partition: { Masters-thesis, Doctoral-thesis}

Slots on Instances:

Doc.Author:
Slot-Cardinality: 1
Doc.Publication-Date:
Slot-Cardinality: 1
Doc.Title:
Slot-Cardinality: 1
Thesis.University:
Slot-Cardinality: 1
Slot-Value-Type: University

Axioms:


Notes:

What about theses published as technical reports?
If it is cited as a TR, it is a TR. One can imagine adding a cross-reference field to references that points to associated documents or other references.
What about theses published as technical reports?
If it is cited as a TR, it is a TR. One can imagine adding a cross-reference field to references that points to associated documents or other references.

Class THESIS


Slots on Class:

Documentation:
An official report on a bout of graduate work for which one receives a degree, published by the university. Never mind that some fields make a big deal about the difference between dissertations and theses. From the bibliographic perspective, they are both of the same family.
Subclass-Of: Document
Exhaustive-Subclass-Partition: {Masters-thesis, Doctoral-thesis}

Slots on Instances:

Doc.Author:
Slot-Cardinality: 1
Doc.Publication-Date:
Slot-Cardinality: 1
Doc.Title:
Slot-Cardinality: 1
Thesis.University:
Slot-Cardinality: 1
Slot-Value-Type: University

Notes:

[Help]
What about theses published as technical reports?
If it is cited as a TR, it is a TR. One can imagine adding a cross-reference field to references that points to associated documents or other references.

To load the Documents-2 ontology we need simply click on the name "Documents-2" under the list of preferred ontologies.

[Back] [Up] [Next]


HomeMake CommentPreferencesSave all and quit sessionReloadDictionaryDocumentationFind NameHelp
:
:
:

Library of Ontologies

Preferred Ontologies

  Documents-2                             [Not loaded]
  User-Ontology No source file available               (0 definitions)

Loaded Ontologies

  3d-Tensor-Quantities                                20 September 1995  [Read only]  (3 definitions)
  Abstract-Algebra                                    20 September 1995  [Read only]  (25 definitions)
  Agents                                                30 October 1995  [Read only]  (8 definitions)
  Basic-Matrix-Algebra                                20 September 1995  [Read only]  (26 definitions)
  Bibliographic-Data                                    30 October 1995  [Read only]  (79 definitions)
  Cml                                                   19 October 1995  [Read only]  (67 definitions)
  Component-Assemblies                                20 September 1995  [Read only]  (9 definitions)
  Components-And-Connections                            7 November 1995  [Read only]  (8 definitions)
  Components-With-Constraints                         20 September 1995  [Read only]  (7 definitions)
  Device-Ontology                                       31 October 1995  [Read only]  (28 definitions)
  Dme-Cml                                             20 September 1995  [Read only]  (9 definitions)
  Documents                                             30 October 1995  [Read only]  (31 definitions)
  Frame-Ontology                                        30 October 1995  [Read only]  (66 definitions)
  Hp-Product-Ontology                                   25 October 1995  [Read only]  (124 definitions)
  Interface-Definition-Language                       20 September 1995  [Read only]  (23 definitions)
  Interface-Ontology                                    11 October 1995  [Read only]  (2 definitions)
  Job-Assignment-Task                                   30 October 1995  [Read only]  (20 definitions)
  Kif-Extensions                                      20 September 1995  [Read only]  (11 definitions)
  Kif-Lists                                           20 September 1995  [Read only]  (22 definitions)
  Kif-Meta                                              28 October 1995  [Read only]  (39 definitions)
  Kif-Numbers                                         20 September 1995  [Read only]  (89 definitions)
  Kif-Relations                                       20 September 1995  [Read only]  (18 definitions)
  Kif-Sets                                            20 September 1995  [Read only]  (31 definitions)
  Mace-Domain                                         20 September 1995  [Read only]  (26 definitions)
  Mechanical-Components                               20 September 1995  [Read only]  (8 definitions)
  Parametric-Constraints                              20 September 1995  [Read only]  (24 definitions)
  Physical-Quantities                                 20 September 1995  [Read only]  (28 definitions)
  Product-Ontology                                      31 October 1995  [Read only]  (46 definitions)
  Quantity-Spaces                                     20 September 1995  [Read only]  (3 definitions)
  Ranges                                                27 October 1995  [Read only]  (6 definitions)
  Scalar-Quantities                                   20 September 1995  [Read only]  (8 definitions)
  Simple-Geometry                                     20 September 1995  [Read only]  (8 definitions)
  Simple-Time                                           30 October 1995  [Read only]  (66 definitions)
  Slot-Constraint-Sugar                               20 September 1995  [Read only]  (14 definitions)
  Standard-Dimensions                                    24 August 1995  [Read only]  (28 definitions)
  Standard-Units                                        30 October 1995  [Read only]  (51 definitions)
  Tensor-Quantities                                   20 September 1995  [Read only]  (25 definitions)
  Thermal-System                                        30 October 1995  [Read only]  (394 definitions)
  Unary-Scalar-Functions                              20 September 1995  [Read only]  (14 definitions)
  User-Ontology                                No source file available               (0 definitions)
  Vehicles                                            20 September 1995  [Read only]  (19 definitions)
  Vt-Design                                           20 September 1995  [Read only]  (12 definitions)
  Vt-Domain                                           20 September 1995  [Read only]  (769 definitions)
  Vt-Example                                          20 September 1995  [Read only]  (1 definitions)

Unloaded Ontologies

  Accounting-Information-System   [Not loaded]
  Cars                            [Not loaded]
  Classified-Advertisements       [Not loaded]
  Documents-2                     [Not loaded]
  Ieee-Std-1175                   [Not loaded]
  Intermed-March                  [Not loaded]
  Kqml-Aco                        [Not loaded]
  Pif                             [Not loaded]
  Pif-Hc                          [Not loaded]
  Pif-Tz                          [Not loaded]

:
:
:
HomeMake CommentPreferencesSave all and quit sessionReloadDictionaryDocumentationFind NameHelp

This is the way that classes were presented in the statically generated hyperwebs. in this case we are looking at the class Thesis in the Bibliographic-data ontology. In this old version of ontology HTMLification we did not display any inherited information that can be seen in italics in this worked example.

[Back] [Up]


Class THESIS


Slots on this class:

Documentation:
An official report on a bout of graduate work for which one receives a degree, published by the university. Never mind that some fields make a big deal about the difference between dissertations and theses. From the bibliographic perspective, they are both of the same family.
Subclass-Of: Document
Exhaustive-Subclass-Partition: {Masters-thesis, Doctoral-thesis}


Slots on instances of this class:

Doc.Author:
Slot-Cardinality: 1
Doc.Publication-Date:
Slot-Cardinality: 1
Doc.Title:
Slot-Cardinality: 1
Thesis.University:
Slot-Cardinality: 1
Slot-Value-Type: University

Notes:


[Up]

The default view of the ontology, #<ONTOLOGY BIBLIOGRAPHIC-DATA 1BBC1F6>

An object of class: ONTOLINGUA-INTERNAL::ONTOLOGY
From class: GFP:KB
FORMAT:                      :NEW
PACKAGE:                     #<Package "ONTOLINGUA-USER" 19086AE>
GFP::DBD:                    Unbound
GFP::DBMS-HOST:              Unbound
GFP::DBMS-TYPE:              :FILE
GFP::DEPENDENCIES:           Unbound
GFP::EXTRA:                  Unbound
GFP::FILENAME:               NIL
GFP::ID:                     Unbound
GFP::IN-MEMORY-P:            NIL
GFP::NAME:                   ONTOLINGUA-USER::BIBLIOGRAPHIC-DATA
GFP::PARENTS:                Unbound
GFP::RECORD-MODIFICATIONS?:  Unbound
GFP::STATE:                  :LIVE
GFP::TESTFN:                 #<Compiled-Function EQ 12B0866>
From class: ONTOLINGUA-INTERNAL::DEFINITIONS-MIXIN
ONTOLINGUA-INTERNAL::DEFINITIONS:            #<Hash-Table 272391E>
ONTOLINGUA-INTERNAL::REFERENCED-ONTOLOGIES:  (#<ONTOLOGY KIF-LISTS 194F42E> #<ONTOLOGY KIF-EXTENSIONS 195F0F6> #<ONTOLOGY AGENTS 1BA6466>...)
From class: ONTOLINGUA-INTERNAL::GETHASH-FAST-INDEX-MIXIN
UTILITIES::TRIE-HASH-KEY:  #:||
From class: ONTOLINGUA-INTERNAL::ONTOLINGUA-REASONING-MIXIN
ONTOLINGUA-INTERNAL::EK-THEORY-NAME:            ONTOLINGUA-INTERNAL::INTERNAL-EK-THEORY-BIBLIOGRAPHIC-DATA-65
ONTOLINGUA-INTERNAL::ONTOLINGUA-INTERNAL-RE-KB:  #<ONTOLINGUA-RE-KB BIBLIOGRAPHIC-DATA 1BBC986>
ONTOLINGUA-INTERNAL::REFERENCE-COUNTS:          #<Structure UTILITIES::STRING=-TRIE 1BBC2CE>
From class: ONTOLINGUA-INTERNAL::ONTOLOGY
ONTOLINGUA-INTERNAL::BUILT-IN-P:                T
ONTOLINGUA-INTERNAL::CLASSES-IMPLICITLY-DEFINING-SLOTS:  NIL
ONTOLINGUA-INTERNAL::DIRTY-P:                   NIL
ONTOLINGUA-INTERNAL::GENERALITY:                :VERY-LOW
ONTOLINGUA-INTERNAL::IMPLICIT-SLOTS-CHECKED?:   T
ONTOLINGUA-INTERNAL::INCLUDED-ONTOLOGIES:       (#<ONTOLOGY SIMPLE-TIME 1B9A116> #<ONTOLOGY AGENTS 1BA6466> #<ONTOLOGY FRAME-ONTOLOGY 1926266>...)
ONTOLINGUA-INTERNAL::INITIALIZED-IN-MEMORY-P:   NIL
ONTOLINGUA-INTERNAL::IO-PACKAGE:                #<Package "ONTOLINGUA-USER" 19086AE>
ONTOLINGUA-INTERNAL::IO-READTABLE:              #<Readtable 1D3A74E>
ONTOLINGUA-INTERNAL::MATURITY:                  :HIGH
ONTOLINGUA-INTERNAL::NAME:                      ONTOLINGUA-USER::BIBLIOGRAPHIC-DATA
ONTOLINGUA-INTERNAL::NOTES:                     ("Author: Thomas Gruber..." "The objective of this ontology is to define the concepts and
..." "ACKNOWLEDGEMENTS: Many thanks to Richard Fikes, who helped with the..."...)
ONTOLINGUA-INTERNAL::ONTOLOGY-DOCUMENTATION:    "The bibliographic-data ontology defines the terms used for describing..."
ONTOLINGUA-INTERNAL::ONTOLOGY-INDEX:            (#<Word Article-Reference in Bibliographic-Data> #<Word Artwork-Reference in Bibliographic-Data> #<Word Author-Name in Bibliographic-Data>...)
ONTOLINGUA-INTERNAL::ONTOLOGY-USE-LIST:         (#<ONTOLOGY SIMPLE-TIME 1B9A116> #<ONTOLOGY AGENTS 1BA6466> #<ONTOLOGY FRAME-ONTOLOGY 1926266>...)
ONTOLINGUA-INTERNAL::PLIST:                     (ONTOLINGUA-INTERNAL::RULE-ENGINE-KB #<ONTOLINGUA-RE-KB BIBLIOGRAPHIC-DATA 5EE0DAE>)
ONTOLINGUA-INTERNAL::READ-ONLY-P:               T
ONTOLINGUA-INTERNAL::SLOTS-IMPLICITLY-DEFINED-IN-ONTOLOGY:  NIL
ONTOLINGUA-INTERNAL::SOURCE-FORMS:              #<Hash-Table 2739AC6>
ONTOLINGUA-INTERNAL::STATIC-P:                  T
ONTOLINGUA-INTERNAL::STUB-P:                    NIL
From class: ONTOLINGUA-INTERNAL::SOURCE-FILE-MIXIN
ONTOLINGUA-INTERNAL::SOURCE-FILE:             #P"/tmp_mnt/vol/q/htw/ontolingua/examples/biblio/bibliographic-data.lisp"
ONTOLINGUA-INTERNAL::SOURCE-FILE-WRITE-DATE:  3024100016
From class: ONTOLINGUA-INTERNAL::SYMBOL-TABLE-MIXIN
ONTOLINGUA-INTERNAL::BACK-TRANSLATIONS:         #<Hash-Table 2739806>
ONTOLINGUA-INTERNAL::PRIVATE-BY-DEFAULT:        NIL
ONTOLINGUA-INTERNAL::PRIVATE-WORDS:             #<Hash-Table 27390B6>
ONTOLINGUA-INTERNAL::SHADOWED-WORDS:            #<Hash-Table 2738E46>
ONTOLINGUA-INTERNAL::SYMBOL-TABLE:              #<Hash-Table 27389A6>
ONTOLINGUA-INTERNAL::TRANSLATIONS:              #<Hash-Table 2739596>
ONTOLINGUA-INTERNAL::USER-SPECIFIED-PUBLIC-WORDS:  #<Hash-Table 2739326>
From class: ONTOLINGUA-INTERNAL::TRANSLATION-ARGS-MIXIN
ONTOLINGUA-INTERNAL::TRANSLATION-ARGS:  (#<ONTOLOGY BIBLIOGRAPHIC-DATA 1BBC1F6>)

Other perspectives: GFP KB, Name, Ontolingua definition object, Ontolingua definitions, Ontolingua ontology, Ontolingua word, Source file, XRef Ontology
Commands: Help, Describe applicable perspectives, History, Inspect New, Set *!, Set Parameters
[Up]

Generic Frame Protocol KB bibliographic-data

Filename: common-lisp:nil

Classes:

    Article-Reference, 
    Artwork-Reference, 
    Author-Name, 
    Biblio-Name, 
    Biblio-Nl-Text, 
    Biblio-Text, 
    Book-Publication-Data-Constraint, 
    Book-Reference, 
    Book-Section-Reference, 
    Cartographic-Map-Reference, 
    City-Address, 
    Computer-Program-Reference, 
    Conference, 
    Doctoral-Thesis-Reference, 
    Edited-Book-Reference, 
    Generic-Unpublished-Reference, 
    Inherits-Author-From-Document, 
    Inherits-Publisher-From-Document, 
    Inherits-Title-From-Document, 
    Inherits-Year-From-Document, 
    Journal-Article-Reference, 
    Keyword, 
    Magazine-Article-Reference, 
    Masters-Thesis-Reference, 
    Misc-Publication-Reference, 
    Multimedia-Document-Reference, 
    Newspaper-Article-Reference, 
    Non-Publication-Reference, 
    Personal-Communication-Reference, 
    Proceedings, 
    Proceedings-Paper-Reference, 
    Publication-Reference, 
    Publisher-Name, 
    Reference, 
    Technical-Manual-Reference, 
    Technical-Report-Reference, 
    Thesis-Reference, 
    Title
Instances:
    Author.Name-Of, 
    Conf.Address, 
    Conf.Date, 
    Conf.Organization, 
    Conference-Of, 
    Edition-Of, 
    Has-Author-Name, 
    Has-Name, 
    Has-Penname, 
    Has-Textual-Representation, 
    Name, 
    Publisher.Address, 
    Ref.Abstract, 
    Ref.Address, 
    Ref.Author, 
    Ref.Booktitle, 
    Ref.Day, 
    Ref.Document, 
    Ref.Edition, 
    Ref.Editor, 
    Ref.Issue, 
    Ref.Keywords, 
    Ref.Labels, 
    Ref.Magazine-Name, 
    Ref.Month, 
    Ref.Newspaper-Name, 
    Ref.Notes, 
    Ref.Number-Of-Volumes, 
    Ref.Organization, 
    Ref.Pages, 
    Ref.Periodical, 
    Ref.Publisher, 
    Ref.Report-Number, 
    Ref.Secondary-Author, 
    Ref.Secondary-Title, 
    Ref.Series-Editor, 
    Ref.Tertiary-Author, 
    Ref.Translator, 
    Ref.Type-Of-Work, 
    Ref.Volume, 
    Ref.Year

Other perspectives: Default, Name, Ontolingua definition object, Ontolingua definitions, Ontolingua ontology, Ontolingua word, Source file, XRef Ontology
Commands: Help, Describe applicable perspectives, History, Inspect New, Set *!, Set Parameters
[Up]

The default view of the symbol, ONTOLINGUA-USER::BIBLIOGRAPHIC-DATA

Value: UnBound
Function: UnBound
PName: "BIBLIOGRAPHIC-DATA"
Package: #<Package "ONTOLINGUA-USER" 19086AE>
Plist: NIL
Documentation: none

Other perspectives: GFP KB, Name, Ontolingua ontology, Source file, XRef Ontology
Commands: Help, Apropos, Describe applicable perspectives, History, Inspect New, Set *!, Set Parameters
[Up]

ONTOLINGUA-USER::BIBLIOGRAPHIC-DATA's source file

(In-Package "ONTOLINGUA-USER")

;;; Written by user Rse from session "hacking2" owned by group JUST-ME
;;; Date: Oct 27, 1995  1520


(Define-Ontology
     Bibliographic-Data
     (Simple-Time Agents Frame-Ontology Slot-Constraint-Sugar documents)
   "The bibliographic-data ontology defines the terms used for describing
bibliographic references.  This ontology defines the basic class for
reference objects and the types (classes) for the data objects that
appear in references, such as authors and titles.  Specific databases
will use schemata that associate references with various combinations
of data objects, usually as fields in a record.  This ontology is
intended to provide the basic types from which a specific database
schema might be defined."
   :Generality
   :very-low
   :maturity :high
   :Io-Package
   "ONTOLINGUA-USER"
   :Issues
   ("Author: Thomas Gruber
Version: 3"
    "The objective of this ontology is to define the concepts and
relationships that underlie a family of databases and tools in the
domain of bibliographies.  Such a conceptualization is intended to
help with automatic translation among existing databases, to enable
the development of reference-formatting styles that are independent of
database or tool, and to support remote services such as bibliography
database search and reference-list generation.

An ontology can be partitioned into ontologies.  This file contains the
BIBLIOGRAPHIC-DATA ontology, which establishes the basic terminology.
Child ontologies that include (specialize) the bibliographic-data ontology
will describe the constraints of specific bibliographic databases and tools.

Basic ontological commitments:

A bibliography is made up of references.  A REFERENCE describes the
information needed to identify and retrieve a publication.  A publication is
associated with a DOCUMENT of some sort (e.g., a book or journal).  In some
cases there are several publications per document (e.g., papers in an edited
collection).  Thus documents are distinguished from references.  Documents
are created by AUTHOR s, which are PEOPLE or other agents (e.g.,
ORGANIZATION ).  They are published by PUBLISHER s or other organizations.

Bibliographic-Data includes a simple ontology of time, Time-Points.  A TIMEPOINT is a specification
of a single point in historical time.  CALENDAR-DATE is a timepoint at the
resolution of days; that is, the day, month, and year are known.  A
CALENDAR-YEAR is a timepoint at the resolution of years.  The publication
date of a DOCUMENT is some kind of timepoint; for many publications only
the year is known.  Events such as a CONFERENCE also occur on dates specified
with timepoints.

All documents have titles.  TITLEs are names (strings of characters), as are
AGENT-NAME s, CITY-ADDRESS es, and other data types that are used as
identifiers and are not further destructured.  The class called BIBLIO-NAME
is a place holder for these atomic identifiers.  The class BIBLIO-NL-TEXT is
for strings of characters meant for human reading, rather than as an
identifier.

The most interesting ontological commitment is the distinction between the
data fields in a reference and the facts about documents.  Facts are stated
as relationships over and properties of explicitly-represented objects.  For
example, some facts are about publishers: the publisher name, the city with
which the publisher is associated, and the year of (latest) publication.  In
a document, the PUBLISHER-OF is an ORGANIZATION.  In a REFERENCE, the
REF.PUBLISHER is the NAME of the publisher, and the REF.ADDRESS is
the PUBLISHER.ADDRESS of the document's publisher.  The REF.YEAR of the
reference is a number, which is the year-of of the
Publication-Date-Of (a timepoint) of the document associated with a
reference.  Thus, in a reference -- the entity we are trying to share -- many
of the facts have been mapped onto these atomic data types such as name
strings, title strings, and numbers.  In a document, some of the meaning of
these data types can be stated as logical constraints.  This is in the spirit
of the Cyc project, which aims to provide the background knowledge behind the
narrow, brittle representations of expert systems and conventional databases.

This distinction between data in references and facts in other parts of the
ontology is there to support the interoperability of tools that commit to
this ontology, and the integration of this ontology and associated databases
with other ontologies and databases.  Part of the incompatibility between
bibliography databases and tools is due to different _encodings_ and
_presentations_ of the same information.  For example, one database might
encode a date as a string, another as a structured record of integer fields.
Their ontological commitments might be the same -- they might both support
years and months for a magazine article reference -- but their encodings mask
their conceptual agreement.  Similarly, different bibliography formatting
styles might disagree on whether a publisher city is required for a given
reference type, but they both agree that the city is a function of the
publisher (not a name for it found in some reference field).  Explicitly
representing agents (authors), organizations (publishers), events
(conferences), and time (publication dates) as objects in the
conceptualization allows one to write knowledge-full constraints about how
the data fields are related.  Capturing these constraints is part of good
database design, because it reduces redundancy and anticipates integration
with other databases.  For example, associating author and publisher _names_
(which are all that appear in references) with independently defined agents
ensures that these agents will be named consistently in the references and
facilitates the importation of data on authors and publishers from other
databases.

This ontology is a set of definitions of classes, relations, and functions.
It is represented in Ontolingua forms, which use KIF as the formal language
and English documentation strings to describe meanings that we haven't
formalized.  We are using a slightly new-and-improved syntax for Ontolingua,
in which the result variable of a function resides next to the argument list.
Also, some new second-order relations are introduced (SAME-VALUES,
HAS-SOME, HAS-ONE, CAN-HAVE-ONE, CANNOT-HAVE, HAS-ONE-OF-TYPE, COMPOSE).
These are defined in an ontology called slot-constraint-sugar, and ontolingua
turns sentences in these forms into their canonical forms using the 
frame ontology vocabulary (value-cardinality, value-type, etc.)."
    "ACKNOWLEDGEMENTS: Many thanks to Richard Fikes, who helped with the
formalization and style decisions, and Fritz Mueller, who implemented
Ontolingua code to support these definitions.  This work is supported
by DARPA."
   "We used to say that

  (Subclass-Partition Biblio-Thing
		      (Setof Agent Timepoint Document Reference Conference))

  but now we've ditched biblio-thing.  We could make this a stand-alone axiom
  or an augmentation of individual-thing."

  "Substantially hacked by JPR and AXF to remove any reasonably general stuff
   on 30-Oct-95."

    (:Copyright "Copyright (c) 1992 Thomas R. Gruber"))
   :Intern-In
   ((Kif-Extensions String) (Kif-Lists Rest First List)
    (Kif-Numbers Integer Natural)))


(In-Ontology (Quote Bibliographic-Data))




;;; ------------------ Classes --------------

;;; Article-Reference

(Define-Class Article-Reference
              (?Ref)
              "An article is a piece published in a journal, magazine, or newspaper."
              :Def
              (And (Publication-Reference ?Ref)
               (Value-Type ?Ref Ref.Document Periodical-Publication)
               (Has-Some ?Ref Ref.Author) (Has-One ?Ref Title-Of)
               (Has-One ?Ref Ref.Year) (Has-One ?Ref Ref.Periodical)
               (Same-Values ?Ref Ref.Periodical
                (Compose Title-Of Ref.Document))
               (Same-Values ?Ref Ref.Secondary-Title Ref.Periodical)))


;;; Artwork-Reference

(Define-Class Artwork-Reference
              (?Ref)
              "A reference to a work of art that does not fit the other categories of
documents.  The author is the artist."
              :Def
              (And (Misc-Publication-Reference ?Ref)
               (Inherits-Author-From-Document ?Ref)
               (Inherits-Title-From-Document ?Ref)
               (Inherits-Year-From-Document ?Ref)))


;;; Author-Name

(Define-Class Author-Name
              (?Name)
              "A string that is used as the name of some author.
Often databases of author names are kept separately from
databases of people or documents."
              :Constraints
              (Biblio-Name ?Name)
              :Issues
              ("see the discussion of AGENT-NAME."))


;;; Biblio-Name

(Define-Class Biblio-Name
              (?name)
              "A name of something in the bibliographic-data ontology.
Names are distinguished from strings in general because
they may be treated specially in some databases; for example,
there may be uniqueness assumptions."
              :Def
              (Biblio-Text ?name)
	      :axiom-def
	      (subclass-partition biblio-name
				  Title Keyword City-Address)
              :Issues
              (("Why isn't there a subclass-partition for this, since
             classes like TITLE, KEYWORD, and CITY-ADDRESS are
             subclasses?"
                "Because these are all _strings_ that may be lexically
             equal.  If they were _concepts_ then they would be 
             mutually exclusive."
		"Fixed by AXF and JPR when we changed biblio-text to have
                 a textual representation slot.")))


;;; Biblio-Nl-Text

(Define-Class Biblio-Nl-Text
              (?text)
              "A string of natural language text mentioned in some bibliographic
reference.  Texts are distinguished from strings in general because
they may be treated specially in some databases, or presented as
free-flowing text to a human reader.  BIBLIO-NL-TEXT's are used for
different purposes than biblio-names.  BIBLIO-NL-TEXT's are for things like
notes and abstracts; BIBLIO-NAME's are meant to identify some object or
some property."
              :Def
              (Biblio-Text ?text)
              :Issues
              ((:See-Also Biblio-Name)))


;;; Biblio-Text

(define-relation has-textual-representation (?x ?string)
  "The textual representation of a text object.  This is a relation rather
   than a function because the textual representation of a thing could
   have manifestations in multiple languages or formats."
  :def (and (individual-thing ?x) (string ?string)))

(Define-Class Biblio-Text
              (?x)
              "The most general class of undifferentiated text objects."
              :Def
              (and (Individual-thing ?x)
		   (has-some ?x has-textual-representation))
              :Issues
              (("Why not make biblio-name and biblio-nl-text be disjoint
             subclasses of biblio-text?"
                "There may be valid names that are exactly the same strings
             as NL texts, so it would be overconstraining to require
             these two classes to be disjoint.  The distinction between
             names and NL texts is in their intended use, rather than
             their forms. This happens because we don't represent what
             the strings denote.  If we did, then we could offer a
             formal basis for distinguishing between these two classes
             of text strings.")))


;;; Biblio-Thing

;(Define-Class Biblio-Thing
;              (?X)
;              "Biblio-thing is the root of the bibliographic ontology.
;It is the superclass-of anything that would otherwise be a 
;a completely standalone primitive (i.e., a root of the class
;hierarchy)."
;              :Def
;              (Individual-Thing ?X)
;              :Axiom-Def
;              (Subclass-Partition Biblio-Thing
;               (Setof Agent Timepoint Document Reference Conference))
;              :Issues
;              ("Removed biblio-text because it is a subclass-of STRING."
;               "Added CONFERENCE because it is a subclass-of biblio-thing
;            and it is disjoint from these other primitive classes."))


;;; Book

;;; Book-Publication-Data-Constraint

(Define-Relation Book-Publication-Data-Constraint
                 (?Ref)
                 "In references associated with books, the reference fields
for publication data such as publisher, place, and edition
are all taken from the data on the book-document itself.
This unary relation captures these constraints in one place, 
so that each of the book reference types can just inherit them."
                 :Iff-Def
                 (And (Publication-Reference ?Ref)
                  (Has-One-Of-Type ?Ref Ref.Document Book)
                  (Has-One ?Ref Ref.Publisher)
                  (Inherits-Publisher-From-Document ?Ref)
                  (Has-One ?Ref Ref.Year) (Inherits-Year-From-Document ?Ref)))


;;; Book-Reference

(Define-Class Book-Reference
              (?Ref)
              "A book reference.   Book references usually include complete publisher
information, and may have a series editor and title, edition, and translator.
A reference to a book gets many of its publication data from the book qua
document."
              :Def
              (And (Publication-Reference ?Ref)
               (Has-One-Of-Type ?Ref Ref.Document Book)
               (Inherits-Author-From-Document ?Ref)
               (Inherits-Title-From-Document ?Ref)
               (Book-Publication-Data-Constraint ?Ref)
               (Same-Values ?Ref Ref.Secondary-Author Ref.Series-Editor)
               (Same-Values ?Ref Ref.Secondary-Title Series-Title-Of)))


;;; Book-Section-Reference

(Define-Class Book-Section-Reference
              (?Ref)
              "A section of a book, like a chapter or a paper in an edited collection."
              :Def
              (And (Publication-Reference ?Ref)
               (Has-One-Of-Type ?Ref Ref.Document Edited-Book)
               (Has-Some ?Ref Ref.Author) (Has-Some ?Ref Ref.Editor)
               (Has-One ?Ref Ref.Booktitle)
               (Same-Values ?Ref Ref.Booktitle
                (Compose Title-Of Ref.Document))
               (Book-Publication-Data-Constraint ?Ref)
               (Same-Values ?Ref Ref.Secondary-Author Ref.Editor)
               (Same-Values ?Ref Ref.Tertiary-Author Ref.Series-Editor)))


;;; Cartographic-Map

;;; Cartographic-Map-Reference

(Define-Class Cartographic-Map-Reference
              (?Ref)
              "A reference to a map created by a cartographer."
              :Def
              (And (Misc-Publication-Reference ?Ref)
               (Inherits-Author-From-Document ?Ref)
               (Inherits-Title-From-Document ?Ref)
               (Inherits-Year-From-Document ?Ref)))


;;; City-Address

(Define-Class City-Address
              (?Name)
              "A city-address is a string that identifies a city
somewhere in the world.  We distinguish it from other
names to facilitate integrating it with ontologies that
include representations for locations and alternative ways
of identifying places."
              :Def
              (Biblio-Name ?Name))


;;; Computer-Program

;;; Computer-Program-Reference

(Define-Class Computer-Program-Reference
              (?Ref)
              "A reference to a computer program.  The title-of is the name of the
program.  The author is the programmer."
              :Def
              (And (Misc-Publication-Reference ?Ref)
               (Inherits-Author-From-Document ?Ref)
               (Inherits-Title-From-Document ?Ref)))


;;; Conference

;;; Augmentation
(Define-Class Proceedings
              (?X)
              "The published proceedings of a conference, workshop, or similar
meeting.  If the proceedings appear as an edited book, the document
is an edited book with a title other than ``proceedings of...''
Proceedings may have editors, however."
              :Def
              (And (Has-One-Of-Type ?X Conference-Of Conference)
		   (Same-Values ?X Title-Of (Compose Name Conference-Of)))
              :Issues
              ("We are assuming that the title of the proceedings is
            the same as the name of the conferences.  This may be
            bogus."))

(Define-Class Conference
              (?X)
              "A conference is a big meeting where people wear badges, sit through
boring talks, and drink coffee in the halls."
              :Def
              (And (Individual-Thing ?X)
               (Has-One-Of-Type ?X Name Biblio-Name)
               (Has-One-Of-Type ?X Conf.Organization Organization)
               (Has-One-Of-Type ?X Conf.Date Calendar-Date)
               (Value-Type ?X Conf.Address City-Address)
               (Can-Have-One ?X Conf.Address)))

(Define-Function Conference-Of
                 (?proc)
                 :->
                 ?Conference
                 "The conference associated with a proceedings."
                 :Def (And (Proceedings ?proc)))

;;; Doctoral-Thesis-Reference

(Define-Class Doctoral-Thesis-Reference
              (?Ref)
              :Def
              (And (Thesis-Reference ?Ref)
               (Value-Type ?Ref Ref.Document Doctoral-Thesis)
               (Has-Value ?Ref Ref.Type-Of-Work "Doctoral Thesis")))


;;; Edited-Book-Reference

(Define-Class Edited-Book-Reference
              (?Ref)
              "like a book-reference, except the document is an edited-book and
the author and editor are the same."
              :Iff-Def
              (And (Book-Reference ?Ref)
               (Has-One-Of-Type ?Ref Ref.Document Edited-Book)
               (Has-Some ?Ref Ref.Editor)
               (Same-Values ?Ref Ref.Author Ref.Editor)))


;;; Generic-Unpublished-Reference

(Define-Class Generic-Unpublished-Reference
              (?Ref)
              :Def
              (Non-Publication-Reference ?Ref))


;;; Inherits-Author-From-Document

(Define-Relation Inherits-Author-From-Document
                 (?Ref)
                 "When a reference is a one-to-one account of a document, then the author
in the reference (ref.author) is the name of the author of the document.
This relation captures this relationship."
                 :Iff-Def
                 (And (Publication-Reference ?Ref)
                  (Same-Values ?Ref Ref.Author
                   (Compose Has-Author-Name Ref.Document))))


;;; Inherits-Publisher-From-Document

(Define-Relation Inherits-Publisher-From-Document
                 (?Ref)
                 "When a reference is a one-to-one account of a document, then the publisher
in the reference (ref.publisher) is the name of the publisher of the
document. This relation captures this relationship.  Inherits the 
publisher's address as well."
                 :Iff-Def
                 (And (Publication-Reference ?Ref)
                  (Same-Values ?Ref Ref.Publisher
                   (Compose Name Publisher-Of Ref.Document))
                  (Same-Values ?Ref Ref.Address
                   (Compose Publisher.Address Publisher-Of Ref.Document))))


;;; Inherits-Title-From-Document

(Define-Relation Inherits-Title-From-Document
                 (?Ref)
                 :Iff-Def
                 (And (Publication-Reference ?Ref)
                  (Same-Values ?Ref Title-Of
                   (Compose Title-Of Ref.Document))))


;;; Inherits-Year-From-Document

(Define-Relation Inherits-Year-From-Document
                 (?Ref)
                 "When a reference is a one-to-one account of a document, then the year
in the reference (ref.year) is the year of publication of the document.
This relation captures this relationship."
                 :Iff-Def
                 (And (Publication-Reference ?Ref)
                  (Same-Values ?Ref Ref.Year
                   (Compose year-of Publication-Date-Of
                    Ref.Document))))


;;; Journal-Article-Reference

(Define-Class Journal-Article-Reference
              (?Ref)
              "A reference to article in a journal must give information sufficient to
find the issue containing the article."
              :Def
              (And (Article-Reference ?Ref)
               (Value-Type ?Ref Ref.Document Journal)
               (Cannot-Have ?Ref Ref.Month)))


;;; Keyword

(Define-Class Keyword
              (?Keyword)
              "A keyword is a string used as an index."
              :Def
              (Biblio-Name ?Keyword))


;;; Magazine-Article-Reference

(Define-Class Magazine-Article-Reference
              (?Ref)
              "A reference to an article in a magazine is essentially the same as a
journal article reference.  Some formatting styles need the distinction.
Magazine article references sometimes include the month instead of the
volume/issue numbers."
              :Def
              (And (Article-Reference ?Ref)
               (Value-Type ?Ref Ref.Document Magazine)
               (Has-One ?Ref Ref.Magazine-Name)
               (Same-Values ?Ref Ref.Magazine-Name Ref.Periodical)))


;;; Masters-Thesis-Reference

(Define-Class Masters-Thesis-Reference
              (?Ref)
              :Def
              (And (Thesis-Reference ?Ref)
               (Value-Type ?Ref Ref.Document Masters-Thesis)
               (Has-Value ?Ref Ref.Type-Of-Work "Masters Thesis")))


;;; Misc-Publication-Reference

(Define-Class Misc-Publication-Reference
              (?Ref)
              :Def
              (Publication-Reference ?Ref)
              :Axiom-Def
              (Subclass-Partition Misc-Publication-Reference
               (Setof Technical-Manual-Reference Computer-Program-Reference
                Cartographic-Map-Reference Artwork-Reference
                Multimedia-Document-Reference)))


;;; Multimedia-Document

;;; Multimedia-Document-Reference

(Define-Class Multimedia-Document-Reference
              (?Ref)
              "A bibliographic reference to a multimedia document.
Who knows what conventions the future holds for these things."
              :Def
              (And (Misc-Publication-Reference ?Ref)
               (Inherits-Author-From-Document ?Ref)
               (Inherits-Title-From-Document ?Ref)
               (Inherits-Year-From-Document ?Ref)))


;;; Newspaper-Article-Reference

(Define-Class Newspaper-Article-Reference
              (?Ref)
              "A newspaper article reference is like a magazine article reference"
              :Def
              (And (Article-Reference ?Ref)
               (Value-Type ?Ref Ref.Document Newspaper)
               (Has-One ?Ref Ref.Newspaper-Name)
               (Same-Values ?Ref Ref.Magazine-Name Ref.Periodical)
               (Has-One ?Ref Ref.Month) (Has-One ?Ref Ref.Day)
               (Value-Type ?Ref Ref.Address City-Address)))


;;; Non-Publication-Reference

(Define-Class Non-Publication-Reference
              (?Ref)
              "A reference to something that just isn't a document."
              :Def
              (And (Reference ?Ref) (Cannot-Have ?Ref Ref.Document))
              :Axiom-Def
              (Subclass-Partition Non-Publication-Reference
               (Setof Personal-Communication-Reference
                Generic-Unpublished-Reference)))


;;; Personal-Communication-Reference

(Define-Class Personal-Communication-Reference
              (?Ref)
              "A reference to a personal communication between the author of the paper in
which the bibliography appears and some other person.  The ref.author of the
reference is the person with whom the conversation was held."
              :Def
              (And (Non-Publication-Reference ?Ref) (Has-One ?Ref Ref.Author)
               (Has-One ?Ref Ref.Year) (Has-One ?Ref Ref.Month)
               (Has-One ?Ref Ref.Day)))


;;; Proceedings-Paper-Reference

(Define-Class Proceedings-Paper-Reference
              (?Ref)
              "An article appearing in the published proceedings of some conference or
workshop."
              :Def
              (And (Publication-Reference ?Ref)
               (Value-Type ?Ref Ref.Document Proceedings)
               (Has-Some ?Ref Ref.Author) (Has-One ?Ref Title-Of)
               (Inherits-Year-From-Document ?Ref)
               (Has-One ?Ref Ref.Booktitle)
               (Same-Values ?Ref Ref.Booktitle
                (Compose Title-Of Ref.Document))
               (Same-Values ?Ref Ref.Secondary-Title Ref.Booktitle)
               (Same-Values ?Ref Ref.Secondary-Author Ref.Editor)
               (Same-Values ?Ref Ref.Organization
                (Compose Conf.Organization Conference-Of Ref.Document))
               (Same-Values ?Ref Ref.Address
                (Compose Conf.Address Conference-Of Ref.Document))
               (Same-Values ?Ref Ref.Month
                (Compose month-of Publication-Date-Of Ref.Document))
               (Same-Values ?Ref Ref.Day
                (Compose day-of Publication-Date-Of Ref.Document))))


;;; Publication-Reference

(Define-Class Publication-Reference
              (?Ref)
              "A reference associated with some kind of published document, where
publication and documenthood are interpreted broadly."
              :Def
              (And (Reference ?Ref)
               (Has-One-Of-Type ?Ref Ref.Document Document)
               (Has-One ?Ref Title-Of))
              :Axiom-Def
              (Subclass-Partition Publication-Reference
               (Setof Book-Reference Book-Section-Reference Article-Reference
                Proceedings-Paper-Reference Thesis-Reference
                Technical-Report-Reference Misc-Publication-Reference)))


;;; Publisher-Name

(Define-Class Publisher-Name
              (?Name)
              "A name of some publisher"
              :Axiom-Def
              (Exact-Range Name Publisher-Name)
              :Constraints
              (Biblio-Name ?Name)
              :Issues
              ("see the discussion of AGENT-NAME."))


;;; Reference

(Define-Class Reference
              (?Ref)
              "A bibliographic reference is a description of some publication that
uniquely identifies it, providing the information needed to retrieve the
associated document.  A reference is distinguished from a citation, which occurs
in the body of a document and points to a reference.  Note that references
are distinguished from documents as well.
    The information associated with a reference is contained in data fields,
which are binary relations (often unary functions).
   A reference should at least contain information about the author, title,
and year.  (Since there are exceptions, that constraint is associated with a
specialization of this class.) ."
              :Def
              (Individual-Thing ?Ref)
              :Axiom-Def
              (Exhaustive-Subclass-Partition Reference
               (Setof Publication-Reference Non-Publication-Reference)))


;;; Technical-Manual-Reference

(Define-Class Technical-Manual-Reference
              (?Ref)
              "A reference to a manual that may accompany a product but is otherwise
unpublished."
              :Def
              (And (Misc-Publication-Reference ?Ref)
               (Inherits-Author-From-Document ?Ref)
               (Inherits-Title-From-Document ?Ref)
               (Inherits-Year-From-Document ?Ref)))


;;; Technical-Report-Reference

(Define-Class Technical-Report-Reference
              (?Ref)
              :Def
              (And (Publication-Reference ?Ref)
               (Inherits-Author-From-Document ?Ref)
               (Inherits-Title-From-Document ?Ref)
               (Inherits-Year-From-Document ?Ref)
               (Has-One ?Ref Ref.Publisher)
               (Same-Values ?Ref Ref.Publisher
                (Compose Name Organization-Of))))


;;; Thesis-Reference

(Define-Class Thesis-Reference
              (?Ref)
              "A reference to a master's or doctoral thesis."
              :Def
              (And (Publication-Reference ?Ref)
               (Value-Type ?Ref Ref.Document Thesis)
               (Inherits-Author-From-Document ?Ref)
               (Inherits-Title-From-Document ?Ref)
               (Inherits-Year-From-Document ?Ref)
               (Has-One ?Ref Ref.Publisher)
               (Same-Values ?Ref Ref.Publisher
                (Compose Name Organization-Of)))
              :Axiom-Def
              (Subclass-Partition Thesis-Reference
               (Setof Doctoral-Thesis-Reference Masters-Thesis-Reference)))


;;; Title

(Define-Class Title
              (?X)
              "A title is a string naming a publication, a document, or 
something analogous.  Title strings are distinct from strings naming
agents (books can't talk)."
              :Def
              (Biblio-Name ?X))


;;; University





;;; ------------------ Relations --------------

(Define-Relation Has-Author-Name
    (?Doc ?Name)
  "Each author of a document is identified by an author-name.
   Although an author can have several pennames, the author only
   gets to use one of them for a particular document."
  :Def (And (Document ?Doc) (Author-Name ?Name)
	    (Exists (?Author)
		    (And (Has-Author ?Doc ?Author)
			 (Author.Name-Of ?Doc ?Author ?Name)))))

;;; Has-Penname

(Define-Relation Has-Penname
                 (?Author ?Name)
                 "An author's pseudonym [Webster].  An author may use several
pseudonyms.  Which name is a function of the document.
The penname of an author cannot be his or her real name [denoted
by the function name]; it must be some made-up name."
                 :Def
                 (And (Author ?Author) (Biblio-Name ?Name)
		      (Not (Name ?Author ?Name)))
                 :Issues
                 ((:See-Also Has-Name Has-Author-Name)))


;;; Publisher.Address

(Define-Relation Publisher.Address
                 (?Publisher ?City)
                 "The publisher.address is the name of a city with which a publisher
is associated for document ordering purposes.  There may be several
cities associated with a publisher.  If the city is well-known,
then just its name is given; otherwise its name and state and sometimes 
country are given as the location."
                 :Def
                 (And (Publisher ?Publisher) (City-Address ?City)))


;;; Ref.Address

(Define-Relation Ref.Address
                 (?Ref ?Address)
                 "The place (e.g., city) where a document is published.  Means
different things depending on the reference type."
                 :Def
                 (And (Reference ?Ref) (City-Address ?Address)))


;;; Ref.Author

(Define-Relation Ref.Author
                 (?Ref ?Author-Name)
                 "Relation between a reference and the name(s) of the
creator(s) of the publication."
                 :Def
                 (And (Reference ?Ref) (Author-Name ?Author-Name)))


;;; Ref.Editor

(Define-Relation Ref.Editor
                 (?Ref ?Editor)
                 "A reference's editor is the name of the document's editor."
                 :Axiom-Def
                 (= Ref.Editor (Compose Name Has-Editor Ref.Document)))


;;; Ref.Keywords

(Define-Relation Ref.Keywords
                 (?Ref ?Keyword)
                 "Keywords associated with a reference."
                 :Def
                 (And (Reference ?Ref) (Keyword ?Keyword)))


;;; Ref.Labels

(Define-Relation Ref.Labels
                 (?Ref ?Label)
                 "Labels associated with a reference."
                 :Def
                 (And (Reference ?Ref) (Biblio-Name ?Label)))


;;; Ref.Notes

(Define-Relation Ref.Notes
                 (?Ref ?Note-String)
                 "In a reference, the notes field contains a set of strings that is used 
to describe all sorts of things."
                 :Def
                 (And (Reference ?Ref) (Biblio-Nl-Text ?Note-String)))


;;; Ref.Secondary-Author

(Define-Relation Ref.Secondary-Author
                 (?Ref ?Editor)
                 "In a reference, the secondary author field usually names an editor
of some sort who was involved in the production of the work but who
was not a original author."
                 :Def
                 (And (Reference ?Ref) (Agent-Name ?Editor)))


;;; Ref.Secondary-Title

(Define-Relation Ref.Secondary-Title
                 (?Ref ?Title)
                 "In a reference, the secondary title usually names the book or 
serial in which the publication is published."
                 :Def
                 (And (Reference ?Ref) (Title ?Title)))


;;; Ref.Series-Editor

(Define-Relation Ref.Series-Editor
                 (?Ref ?Editor)
                 "A reference's series editor is the name of a series editor of 
the document."
                 :Axiom-Def
                 (= Ref.Series-Editor
                  (Compose Name Has-Series-Editor Ref.Document)))


;;; Ref.Tertiary-Author

(Define-Relation Ref.Tertiary-Author
                 (?Ref ?Editor)
                 "Teritiary author of a reference.  Beats me what this is."
                 :Def
                 (And (Reference ?Ref) (Agent-Name ?Editor)))


;;; Ref.Translator

(Define-Relation Ref.Translator
                 (?Ref ?Translator)
                 "A reference's translator is the name of the document's translator."
                 :Axiom-Def
                 (= Ref.Translator
                  (Compose Name Has-Translator Ref.Document)))



;;; ------------------ Functions --------------

;;; Conf.Address

(Define-Function Conf.Address
                 (?Conference)
                 :->
                 ?Address
                 "Conference address."
                 :Def
                 (And (Conference ?Conference) (City-Address ?Address)))


;;; Conf.Date

(Define-Function Conf.Date
                 (?Conference)
                 :->
                 ?Date
                 "Conference date."
                 :Def
                 (And (Conference ?Conference) (Calendar-Date ?Date)))


;;; Conf.Organization

(Define-Function Conf.Organization
                 (?Conference)
                 :->
                 ?Name
                 "Conference name."
                 :Def
                 (And (Conference ?Conference) (Organization ?Name)))


;;; Author.Name-Of

(Define-Function Author.Name-Of
                 (?Doc ?Author)
                 :->
                 ?Name
                 "The name used by an author is a function of the document and the author."
                 :Def
                 (And (Document ?Doc) (Author ?Author) (Author-Name ?Name)))


;;; Edition-Of

(Define-Function Edition-Of (?Doc) :-> ?Nth
                 "Refers to the nth edition of a document."
                 :Def (And (document ?doc) (Natural ?Nth)))


;;; Ref.Abstract

(Define-Function Ref.Abstract
                 (?Ref)
                 :->
                 ?Abstract-String
                 "In a reference, the abstract field contains a string of natural
language text that is used to describe all sorts of things."
                 :Def
                 (And (Reference ?Ref) (Biblio-Nl-Text ?Abstract-String)))


;;; Ref.Booktitle

(Define-Function Ref.Booktitle
                 (?Ref)
                 :->
                 ?Title
                 "The title of the document that is a collection in which a reference
appears.  For example, the title-of of a paper in an edited collection
would be the name of the paper, and the ref.booktitle would be the name
of the edited book."
                 :Def
                 (And (Reference ?Ref) (Title ?Title)))


;;; Ref.Day

(Define-Function Ref.Day
                 (?Ref)
                 :->
                 ?Day
                 "In a reference, the day of the month in which a publication is published.
Useful for conference proceedings, personal communications."
                 :Def
                 (And
                  (Or (Article-Reference ?Ref)
                   (Personal-Communication-Reference ?Ref))
                  (Day-Number ?Day)))


;;; Ref.Document

(Define-Function Ref.Document
                 (?Ref)
                 :->
                 ?Document
                 "Function from references to associated documents. 
Is only defined on publication-references, since by definition they are the
references associated with documents."
                 :Def
                 (And (Publication-Reference ?Ref) (Document ?Document)))


;;; Ref.Edition

(Define-Function Ref.Edition
                 (?Ref)
                 :->
                 ?Nth
                 "Refers to the nth edition of a document."
                 :Def
                 (And (Reference ?Ref) (Natural ?Nth))
                 :Lambda-Body
                 (Edition-Of (Ref.Document ?Ref)))


;;; Ref.Issue

(Define-Function Ref.Issue
                 (?Ref)
                 :->
                 ?Issue-Number
                 "In a reference, the issue number of a journal or magazine
in which an article occurs."
                 :Def
                 (And (Article-Reference ?Ref) (Natural ?Issue-Number)))


;;; Ref.Magazine-Name

(Define-Function Ref.Magazine-Name
                 (?Ref)
                 :->
                 ?Name
                 "Field for name of the magazine in a magazine article reference."
                 :Def
                 (And (Magazine-Article-Reference ?Ref) (Title ?Name)))


;;; Ref.Month

(Define-Function Ref.Month
                 (?Ref)
                 :->
                 ?Month
                 "In a reference, the month in which a publication is published.
Useful for magazines, conference proceedings, and technical reports."
                 :Def
                 (And (Or (Article-Reference ?Ref) (Technical-Report ?Ref))
		      (Month-Name ?Month)))


;;; Ref.Newspaper-Name

(Define-Function Ref.Newspaper-Name
                 (?Ref)
                 :->
                 ?Name
                 "Field for name of a newspaper in a newspaper article reference."
                 :Def
                 (And (Newspaper-Article-Reference ?Ref) (Title ?Name)))


;;; Ref.Number-Of-Volumes

(Define-Function Ref.Number-Of-Volumes
                 (?Ref)
                 :->
                 ?Number
                 "In a reference, the number of volumes in the associated document."
                 :Def
                 (And (Reference ?Ref) (Natural ?Number)))


;;; Ref.Organization

(Define-Function Ref.Organization
                 (?Ref)
                 :->
                 ?Address
                 "The organization that publishes a referenced document.
May be inherited from a conference organization for proceedings."
                 :Def
                 (And (Reference ?Ref) (Organization ?Address)))


;;; Ref.Pages

(Define-Function Ref.Pages
                 (?Ref)
                 :->
                 ?Page-Range
                 "In a reference, the pages of an article or analogous subdocument in which a
publication resides.  Specified as a sequence of two integers."
                 :Def
                 (And
                  (Or (Book-Section-Reference ?Ref) (Article-Reference ?Ref)
                   (Proceedings-Paper-Reference ?Ref))
                  (List ?Page-Range) (Integer (First ?Page-Range))
                  (Integer (First (Rest ?Page-Range)))))


;;; Ref.Periodical

(Define-Function Ref.Periodical
                 (?Ref)
                 :->
                 ?Journal-Title
                 "Most general relation between a reference and a journal."
                 :Def
                 (And (Reference ?Ref) (Title ?Journal-Title)))


;;; Ref.Publisher

(Define-Function Ref.Publisher
                 (?Ref)
                 :->
                 ?Publisher-Name
                 "The publisher field of a reference points to the publisher of 
the associated document."
                 :Def
                 (And (Reference ?Ref) (Publisher-Name ?Publisher-Name)))


;;; Ref.Report-Number

(Define-Function Ref.Report-Number
                 (?Ref)
                 :->
                 ?Identifier
                 "An alphanumeric identifier that identifies a technical report within a
series sponsored by the publishing institution.  For example, STAN-CS-68-118
is the 118th report number of a report written at Stanford in the computer
science department in 1968."
                 :Def
                 (And (Technical-Report-Reference ?Ref)
                  (Biblio-Name ?Identifier)))


;;; Ref.Type-Of-Work

(Define-Function Ref.Type-Of-Work
                 (?Ref)
                 :->
                 ?Name
                 "An identifier of some specialization within the reference type.
For example, technical reports are labeled with types-of-work such as
``technical report'' and ``memo''.  Dissertations are specialized by the
level of the associated degree."
                 :Def
                 (And
                  (Or (Thesis-Reference ?Ref)
                   (Technical-Report-Reference ?Ref)
                   (Misc-Publication-Reference ?Ref))
                  (Biblio-Name ?Name)))


;;; Ref.Volume

(Define-Function Ref.Volume
                 (?Ref)
                 :->
                 ?Number
                 "in a reference, the volume number of a journal or magazine
in which an article occurs."
                 :Def
                 (And
                  (Or (Book-Reference ?Ref) (Book-Section-Reference ?Ref)
                   (Article-Reference ?Ref))
                  (Natural ?Number)))


;;; Ref.Year

(Define-Function Ref.Year
                 (?Ref)
                 :->
                 ?Year
                 "The year field is a function from a reference to the year 
in which the publication was published."
                 :Def
                 (And (Reference ?Ref) (Year-Number ?Year)))


;;; ------------------ Instance --------------


;;; ------------------ Axiom --------------


;;; ------------------ Other --------------

(Define-Relation Has-Name
                 (?x ?Name)
                 "An author name is the name of an agent used to identify
  it as an author.  It is not necessarily unique; authors may
  go by pseudonyms.  A particular name of an author must 
  be either the author's real name (i.e., her name), or else
  it is one of her pennames."
  :axiom-def ((=> (author ?x)
		  (=> (Has-Name ?x ?name)
		      (And (Biblio-Name ?Name)
			   (Or (= (Name ?Author) ?Name)
			       (Has-Penname ?Author ?Name)))))))

(Define-Function Name (?x) :-> ?Name
  "Conference name, and the name of a publisher; one per publisher."
  :axiom-def ((=> (Conference ?x)
		  (=> (= (name ?x) ?name)
		      (Biblio-Name ?Name)))
	      (=> (Publisher ?x)
		  (=> (= (name ?x) ?name)
		      (and (Biblio-Name ?Name))))))


Other perspectives: Default, GFP KB, Name, Ontolingua ontology, XRef Ontology
Commands: Help, Apropos, Describe applicable perspectives, History, Inspect New, Set *!, Set Parameters
[Up]

Analysis of ontology BIBLIOGRAPHIC-DATA

Documentation:
The bibliographic-data ontology defines the terms used for describing
bibliographic references.  This ontology defines the basic class for
reference objects and the types (classes) for the data objects that
appear in references, such as authors and titles.  Specific databases
will use schemata that associate references with various combinations
of data objects, usually as fields in a record.  This ontology is
intended to provide the basic types from which a specific database
schema might be defined.

Bibliographic-Data includes the following ontologies:

    Simple-Time
       Frame-Ontology
          Kif-Relations
             Kif-Sets
             Kif-Lists
                Kif-Numbers
          Kif-Extensions
             Kif-Sets
             Kif-Lists ...
             Kif-Numbers
             Kif-Relations ...
          Kif-Meta
             Kif-Sets
             Kif-Lists ...
       Slot-Constraint-Sugar
          Frame-Ontology ...
       Ranges
          Frame-Ontology ...
    Agents
       Slot-Constraint-Sugar ...
       Frame-Ontology ...
    Frame-Ontology ...
    Slot-Constraint-Sugar ...
    Documents
       Slot-Constraint-Sugar ...
       Frame-Ontology ...
       Agents ...
       Simple-Time ...

No ontologies include Bibliographic-Data.

Bibliographic-Data uses the same ontologies as it includes.

No ontologies use Bibliographic-Data.

Class hierarchy (38 classes defined):

    Biblio-Text
       Biblio-Name
          Author-Name
          City-Address
          Keyword
          Publisher-Name
          Title
       Biblio-Nl-Text
    Conference
    Proceedings
    Reference
       Non-Publication-Reference
          Generic-Unpublished-Reference
          Personal-Communication-Reference
       Publication-Reference
          Article-Reference
             Journal-Article-Reference
             Magazine-Article-Reference
             Newspaper-Article-Reference
          Book-Publication-Data-Constraint
             Book-Reference
                Edited-Book-Reference
             Book-Section-Reference
          Book-Reference ...
          Book-Section-Reference
          Inherits-Author-From-Document
             Artwork-Reference
             Book-Reference ...
             Cartographic-Map-Reference
             Computer-Program-Reference
             Multimedia-Document-Reference
             Technical-Manual-Reference
             Technical-Report-Reference
             Thesis-Reference
                Doctoral-Thesis-Reference
                Masters-Thesis-Reference
          Inherits-Publisher-From-Document
             Book-Publication-Data-Constraint ...
          Inherits-Title-From-Document
             Artwork-Reference
             Book-Reference ...
             Cartographic-Map-Reference
             Computer-Program-Reference
             Multimedia-Document-Reference
             Technical-Manual-Reference
             Technical-Report-Reference
             Thesis-Reference ...
          Inherits-Year-From-Document
             Artwork-Reference
             Book-Publication-Data-Constraint ...
             Cartographic-Map-Reference
             Multimedia-Document-Reference
             Proceedings-Paper-Reference
             Technical-Manual-Reference
             Technical-Report-Reference
             Thesis-Reference ...
          Misc-Publication-Reference
             Artwork-Reference
             Cartographic-Map-Reference
             Computer-Program-Reference
             Multimedia-Document-Reference
             Technical-Manual-Reference
          Proceedings-Paper-Reference
          Technical-Report-Reference
          Thesis-Reference ...

16 relations defined:

  Has-Author-Name
  Has-Name
  Has-Penname
  Has-Textual-Representation
  Publisher.Address
  Ref.Address
  Ref.Author
  Ref.Editor
  Ref.Keywords
  Ref.Labels
  Ref.Notes
  Ref.Secondary-Author
  Ref.Secondary-Title
  Ref.Series-Editor
  Ref.Tertiary-Author
  Ref.Translator

25 functions defined:

  Author.Name-Of
  Conf.Address
  Conf.Date
  Conf.Organization
  Conference-Of
  Edition-Of
  Name
  Ref.Abstract
  Ref.Booktitle
  Ref.Day
  Ref.Document
  Ref.Edition
  Ref.Issue
  Ref.Magazine-Name
  Ref.Month
  Ref.Newspaper-Name
  Ref.Number-Of-Volumes
  Ref.Organization
  Ref.Pages
  Ref.Periodical
  Ref.Publisher
  Ref.Report-Number
  Ref.Type-Of-Work
  Ref.Volume
  Ref.Year

No instances defined.

46 unnamed axioms defined.

No named axioms defined.

38 classes defined:

  Article-Reference
  Artwork-Reference
  Author-Name
  Biblio-Name
  Biblio-Nl-Text
  Biblio-Text
  Book-Publication-Data-Constraint
  Book-Reference
  Book-Section-Reference
  Cartographic-Map-Reference
  City-Address
  Computer-Program-Reference
  Conference
  Doctoral-Thesis-Reference
  Edited-Book-Reference
  Generic-Unpublished-Reference
  Inherits-Author-From-Document
  Inherits-Publisher-From-Document
  Inherits-Title-From-Document
  Inherits-Year-From-Document
  Journal-Article-Reference
  Keyword
  Magazine-Article-Reference
  Masters-Thesis-Reference
  Misc-Publication-Reference
  Multimedia-Document-Reference
  Newspaper-Article-Reference
  Non-Publication-Reference
  Personal-Communication-Reference
  Proceedings
  Proceedings-Paper-Reference
  Publication-Reference
  Publisher-Name
  Reference
  Technical-Manual-Reference
  Technical-Report-Reference
  Thesis-Reference
  Title

All constants that were mentioned were defined.

The following constants are defined in this ontology and augment definitions in an included ontology(s) (this is not an error):


Other perspectives: Default, GFP KB, Name, Ontolingua definition object, Ontolingua definitions, Ontolingua ontology, Ontolingua word, Source file
Commands: Help, Describe applicable perspectives, History, Inspect New, Set *!, Set Parameters
The user has selected the Create Subclass command from within the help facility. The result of selecting this command is to take the user to a form prompting for the name of the new subclass. Notice how the Subclass-Of typein field already has the correct value inserted.
[Up] [Back]
HomeMake CommentPreferencesSave all and quit sessionReloadOntology LibraryParent OntologySuppress edit gadgetsCan't UndoDictionaryDocumentationFind NameHelp

New Unnamed Class

Class name:


Search all ontologies
Documentation:
Subclass-Of:

Search all ontologies


HomeMake CommentPreferencesSave all and quit sessionReloadOntology LibraryParent OntologySuppress edit gadgetsCan't UndoDictionaryDocumentationFind NameHelp

When the page comes back, the editor is offereing us a number of possible completions of the substring "Te". We look at these and decide that the the value Technical-Document seems like the right thing. If we are unsure we can of course simply click on any of these offered completions to see the definition of the candidate slot value. To insert the completion we click on the little ^ insertion caret.

[Back] [Up] [Next]


HomeMake CommentPreferencesSave all and quit sessionReloadOntology LibraryParent OntologySuppress edit gadgetsCan't UndoDictionaryDocumentationFind NameHelp

Class Thesis


Notes for Thesis:


Slots on class Thesis:

Arity: 1
Documentation:
An official report on a bout of graduate work for which one receives a degree, published by the university. Never mind that some fields make a big deal about the difference between dissertations and theses. From the bibliographic perspective, they are both of the same family.
Exhaustive-Subclass-Partition: {Doctoral-Thesis, Masters-Thesis}
Instance-Of: Class, Relation, Set
Subclass-Of:

New value.

Possible completions are: ^Term, ^Technical-Report, ^Technical-Manual, ^Technical-Document, ^Termop
Search all ontologies
, Individual, Individual-Thing, Thing
Superclass-Of: Doctoral-Thesis, Masters-Thesis


Slots on instances of Thesis:

Has-Author:
Slot-Cardinality: 1
Organization-Of:
Slot-Cardinality: 1
Slot-Value-Type: University
Publication-Date-Of:
Slot-Cardinality: 1
Title-Of:
Slot-Cardinality: 1

Implication Axioms for Thesis:

(=> (Thesis ?X)
    (And (Value-Cardinality ?X Has-Author 1)
         (Value-Cardinality ?X Title-Of 1)
         (Value-Cardinality ?X Publication-Date-Of 1)
         (Value-Cardinality ?X Organization-Of 1)
         (Value-Type ?X Organization-Of University)))


Other Related Axioms for Thesis:

(Subclass-Partition Document
                    (Setof Book
                           Periodical-Publication
                           Proceedings
                           Thesis
                           Technical-Report
                           Miscellaneous-Publication))



HomeMake CommentPreferencesSave all and quit sessionReloadOntology LibraryParent OntologySuppress edit gadgetsCan't UndoDictionaryDocumentationFind NameHelp

The ontology editor automatically takes us to the the ontology we have just loaded and notifies us of the result of loading. In this case we are operating in a session owned by the group "JUST-ME". Such sessions are private and are not visible to user users. We can also create sessions that are shared between multiple users.

The ontology shows us an indented, hierarchical view of the classes defined. We note that the superclass of Thesis is Document, which doesn't seem as precise as we'd like. We decide to change the definition of Thesis. We do this first by going to it. The edit we're going to perform is to change Thesis's superclass.

[Back] [Up] [Next]


While you were away, the following happened:


HomeMake CommentPreferencesSave all and quit sessionReloadOntology LibraryAllow edit gadgetsCan't UndoDictionaryDocumentationFind NameHelp
:
:

Ontology DOCUMENTS-2


Ontology documentation:

Not supplied yet.

Notes for Documents-2:


Summary of Documents-2:

Documents-2 includes the following ontologies:

    Slot-Constraint-Sugar
       Frame-Ontology
          Kif-Relations
             Kif-Sets
             Kif-Lists
                Kif-Numbers
          Kif-Extensions
             Kif-Sets
             Kif-Lists ...
             Kif-Numbers
             Kif-Relations ...
          Kif-Meta
             Kif-Sets
             Kif-Lists ...
    Frame-Ontology ...
    Agents
       Slot-Constraint-Sugar ...
       Frame-Ontology ...
    Simple-Time
       Frame-Ontology ...
       Slot-Constraint-Sugar ...
       Ranges
          Frame-Ontology ...

No ontologies include Documents-2.

Class hierarchy (21 classes defined):

    Author
    Document
       Book
          Edited-Book
       Miscellaneous-Publication
          Artwork
          Cartographic-Map
          Computer-Program
          Multimedia-Document
          Technical-Manual
       Periodical-Publication
          Journal
          Magazine
          Newspaper
       Proceedings
       Technical-Document
       Technical-Report
       Thesis
          Doctoral-Thesis
          Masters-Thesis
    Title

4 relations defined:

  Has-Author
  Has-Editor
  Has-Series-Editor
  Has-Translator

7 functions defined:

  Conference-Of
  Number-Of-Pages-Of
  Organization-Of
  Publication-Date-Of
  Publisher-Of
  Series-Title-Of
  Title-Of

No instances defined.

11 unnamed axioms defined.

No named axioms defined.

21 classes defined:

  Artwork
  Author
  Book
  Cartographic-Map
  Computer-Program
  Doctoral-Thesis
  Document
  Edited-Book
  Journal
  Magazine
  Masters-Thesis
  Miscellaneous-Publication
  Multimedia-Document
  Newspaper
  Periodical-Publication
  Proceedings
  Technical-Document
  Technical-Manual
  Technical-Report
  Thesis
  Title


:
:
HomeMake CommentPreferencesSave all and quit sessionReloadOntology LibraryAllow edit gadgetsCan't UndoDictionaryDocumentationFind NameHelp

Class THESIS


Slots on Class:

Documentation:
An official report on a bout of graduate work for which one receives a degree, published by the university. Never mind that some fields make a big deal about the difference between dissertations and theses. From the bibliographic perspective, they are both of the same family.
Subclass-Of: Document
Exhaustive-Subclass-Partition: {Masters-thesis, Doctoral-thesis}

Slots on Instances:

:
[Help]
Doc.Author:
Slot-Cardinality: 1
Doc.Publication-Date:
Slot-Cardinality: 1
Doc.Title:
Slot-Cardinality: 1
Thesis.University:
Slot-Cardinality: 1
Slot-Value-Type: University

Notes:

What about theses published as technical reports?
If it is cited as a TR, it is a TR. One can imagine adding a cross-reference field to references that points to associated documents or other references.
What about theses published as technical reports?
If it is cited as a TR, it is a TR. One can imagine adding a cross-reference field to references that points to associated documents or other references.

Class THESIS


Slots on Class:

Documentation:
[Help]
Subclass-Of: Document
Exhaustive-Subclass-Partition: {Masters-thesis, Doctoral-thesis}

Slots on Instances:

Doc.Author:
Slot-Cardinality: 1
Doc.Publication-Date:
Slot-Cardinality: 1
Doc.Title:
Slot-Cardinality: 1
Thesis.University:
Slot-Cardinality: 1
Slot-Value-Type: University

Notes:

What about theses published as technical reports?
If it is cited as a TR, it is a TR. One can imagine adding a cross-reference field to references that points to associated documents or other references.
What about theses published as technical reports?
If it is cited as a TR, it is a TR. One can imagine adding a cross-reference field to references that points to associated documents or other references.

Class THESIS


Slots on Class:

Documentation:
An official report on a bout of graduate work for which one receives a degree, published by the university. Never mind that some fields make a big deal about the difference between dissertations and theses. From the bibliographic perspective, they are both of the same family.
Subclass-Of: Document
Exhaustive-Subclass-Partition: {Masters-thesis, Doctoral-thesis}

Slots on Instances:

Doc.Author:
Slot-Cardinality: 1
Doc.Publication-Date:
Slot-Cardinality: 1
Doc.Title:
Slot-Cardinality: 1
Thesis.University:
Slot-Cardinality: 1
Slot-Value-Type:
[Remove][Rename][Help]

Notes:

What about theses published as technical reports?
If it is cited as a TR, it is a TR. One can imagine adding a cross-reference field to references that points to associated documents or other references.
What about theses published as technical reports?
If it is cited as a TR, it is a TR. One can imagine adding a cross-reference field to references that points to associated documents or other references.

Class THESIS


Slots on Class:

Documentation:
An official report on a bout of graduate work for which one receives a degree, published by the university. Never mind that some fields make a big deal about the difference between dissertations and theses. From the bibliographic perspective, they are both of the same family.
Subclass-Of: Document
Exhaustive-Subclass-Partition: {Masters-thesis, Doctoral-thesis}

Slots on Instances:

Doc.Author:
Slot-Cardinality: 1
Doc.Publication-Date:
Slot-Cardinality: 1
Doc.Title:
Slot-Cardinality: 1
Thesis.University:
Slot-Cardinality: 1
Slot-Value-Type: University

Notes:

[Help]
What about theses published as technical reports?
If it is cited as a TR, it is a TR. One can imagine adding a cross-reference field to references that points to associated documents or other references.

Class THESIS


Slots on Class:

Documentation:
[Help]
Subclass-Of: Document
Exhaustive-Subclass-Partition: {Masters-thesis, Doctoral-thesis}

Slots on Instances:

Doc.Author:
Slot-Cardinality: 1
Doc.Publication-Date:
Slot-Cardinality: 1
Doc.Title:
Slot-Cardinality: 1
Thesis.University:
Slot-Cardinality: 1
Slot-Value-Type: University

Notes:

What about theses published as technical reports?
If it is cited as a TR, it is a TR. One can imagine adding a cross-reference field to references that points to associated documents or other references.
What about theses published as technical reports?
If it is cited as a TR, it is a TR. One can imagine adding a cross-reference field to references that points to associated documents or other references.

Class THESIS


Slots on Class: