This document is the FAQ (Frequently Asked Questions) for the Open Knowledge Base Connectivity specification.

This FAQ was put together by the joint efforts of Vinay K. Chaudhri and Jerome Thomere at SRI International, and Bill Grosso at Section of Medical Informatics at Stanford.
Last Updated: 07/18/98
Questions or Comments? Send them to

Introductory and General Questions

  1. What is OKBC?
  2. Do I have to know LISP to use OKBC?
  3. How do I get a copy of the OKBC Specification?
  4. The OKBC Specification is hard to read. Any helpful hints?
  5. Do you have some references for background information?

Questions about Knowledge Model

  1. What is the OKBC knowledge model?
  2. Do all knowledge base servers implement the same knowledge model?
  3. What is KIF?
  4. Why is there such a strong emphasis on formal models?
  5. What are the primitive data types in OKBC?
  6. What's a frame?
  7. Why do you make a distinction between frames and primitive data types?
  8. What's a class?
  9. What's an instance?
  10. What's a slot?
  11. What's a facet?
  12. Why is a class defined to be a set?
  13. Does it really make sense to have slots which are also classes?
  14. Are there plans to add more primitive data types?
  15. Why do you distinguish :THING?
  16. Why do you define a set of standard slots and facets if you don't require servers to support them?
  17. Are any of the slots and facets universally supported?
  18. What if I want to place additional restrictions on a class in my ontology? Does OKBC have any support for axioms?
  19. What happens if a server doesn't support the entire OKBC knowledge model?
  20. What is the Big Venn Diagram of all knowledge?

Information Useful for Writing OKBC Clients

  1. What programming languages are currently supported by OKBC?
  2. How do I get started?
  3. Where can I download the client code from?
  4. How do I know I have the correct version of the client code?
  5. Does OKBC work over a network?
  6. How do I connect to a server?
  7. How do I specify a knowledge base within a server?
  8. What happens if a connection is lost?
  9. If I lose a connection and reconnect, can I discover what the last operation completed was?
  10. What happens if I make the same assertion twice (especially with tell and ask)?
  11. How are exceptions signaled?
  12. Are the exceptions in the spec the only ones that can be signalled?
  13. When would I use tell and ask?
  14. When would I use :inference-level?
  15. What does decontextualize mean?
  16. What does one do with a decontextualized-value?
  17. What's in a frame-handle?
  18. What happens if I perform an operation while holding an enumerator?
  19. I'm concerned about concurrency and integrity issues. For example, what happens if one client alters the knowledge base while another client is using an enumerator?
  20. What happens if I try to fetch more objects than are in an enumerator?
  21. Can I go backwards in an enumerator?
  22. What does it mean for a method to be optional ?
  23. Is there a standard port number for a KB OKBCserver?
  24. What are the various things that can be used as arguments or received as return values?
  25. What functions are extensible by the KB?

Questions about Behaviors

  1. Why are there so many behaviors?
  2. How should client software interpret behaviors?
  3. Will there be new behaviors in the future?
  4. What are the most common behavior sets?

Questions about the Procedure Language

  1. Why is a procedure language necessary?
  2. Where are procedures stored?
  3. If I have two clients connected to the same knowledge base and one of them defines a procedure, can the other one use it?
  4. What happens if an exception occurs in a procedure?
  5. Is there any try/catch mechanism?

Questions about Available Implementations

  1. Who has built an OKBC compliant server?
  2. If I build a knowledge base using a particular server, am I then "tied" to that server?