Information

Pathway Tools Overview Pathway Tools Testimonials
Publications
Release Note History
Contributions
Pathway Tools Blog
Technical Datasheet
Fact Sheet
Pathway Tools Testimonials
Contact Us

Licensing

Academic Licenses Commercial Licenses

Technical Specs

Web Services
Pathway Tools APIs
Installation Guide
Ontologies
Operations
File Formats

Support

Submitting Bug Reports
Tutorials
FAQs
Webinars
GFP for Loom users

Notes on GFP for Loom users


The GFP was designed to present a uniform interface that masks the details of the underlying FRS. While there are many advantages to this approach, the terminology can be confusing for users who are accustomed to interacting with one particular FRS. The problem can be particularly acute for Loom users, as the Loom style of definitions, with necessary and sufficient conditions, does not map easily into the frame, slot, value, and facet structures that make up the GFP. For this reason, we describe here how the various GFP structures are interpreted as they are applied to Loom knowledge bases, and which parts of Loom are not supported by GFP. The GFP and the GKB-Editor have been implemented and tested with Loom 2.1 using lite-instances.

Classes and slots in GFP map to concepts and relations/roles in Loom, respectively. When we create a GFP slot with a particular domain, we do two things: we create a relation corresponding to the slot, and then we redefine the domain concept to take that relation as a role (this behavior produces results analogous to setting the :domain-implies-role feature for clos-instances).

Facets are annotations on slots. The GFP uses facets as a means of defining constraints, restrictions and defaults on frames, slots and slot-values. To this effect, a set of standard facets have been defined. The GFP also supports a more general use of facets to annotate slots with arbitrary values, but this use has no corresponding expression in Loom. The standard facets currently cover only a small number of the possible restriction types available to Loom users, and unfortunately there are some quite common restrictions that cannot be expressed using the GFP (for example, it is impossible to state using GFP that some value should be less than a given number). For this reason, the GKB-Editor also offers a means by which the user can directly edit the Loom definition of a frame, without going through the GFP. We hope this measure will be just a temporary one.

The standard facets available in GFP, and their corresponding interpretations in Loom, are described below. In keeping with Loom behavior, facets can be defined on classes and slots only -- instances can inherit facet values, but cannot have any of their own values.

  • :value-type
    This facet is a means of specifying a type restriction on the values of a slot. When applied to a slot in a class frame, this facet produces a restriction on the corresponding concept of the form (:all slot type). When applied to a slot independently of any class, the type becomes the range of the relation.
  • :cardinality
    This facet specifies the exact number of possible values that a slot may take on. When applied to a slot in a class frame, this facet produces a restriction on the corresponding concept of the form (:exactly N slot). If this facet is present in a slot independently of any class, the only value it is permitted to take on is 1. The corresponding relation will then be defined with the :single-valued characteristic.
  • :maximum-cardinality
    When this facet is applied to a slot in a class frame, it produces a restriction of the form (:at-most N slot). This facet does not apply to slots independently of any class (we could have allowed it to have a value of 1, with the same meaning as the :slot-cardinality facet, but we chose not to have two different facets with the same meaning).
  • :minimum-cardinality
    When this facet is applied to a slot in a class frame, it produces a restriction of the form (:at-least N slot). This facet does not apply to slots independently of any class.
  • :template-values
    This facet is meant to be used to specify values that are inherited but cannot be overridden. When this facet is applied to a slot in a class frame, it produces a restriction of the form (:filled-by slot value(s)). This facet does not apply to slots independently of any class.
  • :default-template-values
    This facet allows you to specify default values for a slot in a class.
  • :domain
    This facet is applicable only to slots independently of any frame, and allows the domain of the relation to be specified.
  • :inverse
    This facet can have a single value, the relation that is the inverse of the slot.
  • :numeric-minimum
    When this facet is applied to a slot in a class frame, it produces a restriction of the form (>= slot N).
  • :numeric-maximum
    When this facet is applied to a slot in a class frame, it produces a restriction of the form (<= slot N).
  • :documentation
    This facet is applicable only to slots independently of any frame, and contains the documentation for the Loom relation.
Loom does not permit easy incremental modification of defaults, restrictions, and superconcepts for its concepts. The GKB-Editor and the GFP, however, specifically encourage building up frames incrementally. As an implementation detail, when a class is incrementally modified by a GFP operation, the Loom concept definition is retrieved and altered, and the concept is completely redefined.

The GFP currently has no support for Loom productions, actions or methods.


Links

Return to the GKB-Editor Overview page.

Read about the Generic Frame Protocol.


Suzanne M. Paley <paley@ai.sri.com>
Last modified: Wed May 29 16:43:03 1996