Standard-OIL

This file was automatically created by Bonfire on Tue Nov 28 16:48:32 GMT+01:00 2000. Language consists of 45 NonTerminals and 63 different Terminals. Starting NonTerminal is ontology.
DefinitionsXRefNotesQuestions
BNF definition for Standard OIL
Frank van Harmelen
Ian Horrocks
Michel Klein

Version history

$Id: Standard-OIL.bnf,v 1.6 2000/11/28 15:47:18 michel Exp $

Notes

  1. terminal symbols are written in bold (ie appearing as part of the OIL language)
  2. brackets are employed as part of the BNF formalism. Only brackets marked as terminal symbols are part of the OIL syntax
  3. OIL is case-sensitive (because RDF is case-sensitive). All terminal symbols are therefore also case-sensitive
  4. We assume that identifiers (for classes, roles, etc) do not coincide with terminal symbols of the language (such as slot-constraint, or, etc).
<ontology> ::=
begin-ontology
<container>
<definitions>
end-ontology
<%STRING> ::=
Predefined Non-Terminal
Notes on the container syntx:
  • it overspecifies the order of the elements in a signature, but never mind..
  • see ISO8601 for format of dates
  • MIME/types are suggested to use for format
  • relations can also be qualified: relation.requires, relation.isRequiredBy, etc.
<container> ::=
ontology-container
( title <%STRING> )+
( creator <%STRING> )+
( subject <%STRING> )*
description <%STRING>
description.release <%STRING>
( publisher <%STRING> )*
( contributor <%STRING> )*
( date <%STRING> )*
type ontology
( type <%STRING> )*
( format <%STRING> )*
( identifier <URI> )+
( source <URI> )*
( language <%STRING> )+
( relation <URI> )*
( rights <%STRING> )*
<definitions> ::=
ontology-definitions
[ <import-exp> ]
( <definition> )*
<import-exp> ::=
import <URI>+
<definition> ::=
<class-definition> | <slot-definition> | <axiom>
<class-definition> ::=
class-def [ <type> ] <class-name>
[ documentation <%STRING> ]
[ <subclass> ]
( <slot-constraint> )*
<type> ::=
primitive | defined
<subclass> ::=
subclass-of <class-exp>+
<class-exp> ::=
<class-name> |
top | thing | bottom | <set-exp> |
( <slot-constraint> ) |
( <class-exp> ( and <class-exp> )+ ) |
( <class-exp> ( or <class-exp> )+ ) |
( not <class-exp> )
<set-exp> ::=
( one-of <ind-name>+ )
<slot-constraint> ::=
slot-constraint <slot-name> <constraint-exp>+
<constraint-exp> ::=
<has-value-exp> |
<value-type-exp> |
<max-cardinality-exp> |
<min-cardinality-exp> |
<cardinality-exp> |
<filler-exp>
filler-exp is syntactic sugar for "has-value (one-of ind-name) +" or "has-value concrete-type +"
<filler-exp> ::=
has-filler <filler>+
<%INTEGER> ::=
Predefined Non-Terminal
<filler> ::=
<ind-name> | <%STRING> | <%INTEGER>
<has-value-exp> ::=
has-value ( <class-exp>+ | <concrete-type-exp>+)
<value-type-exp> ::=
value-type ( <class-exp>+ | <concrete-type-exp>+)
<max-cardinality-exp> ::=
max-cardinality <%INTEGER> [ <expression> ]
<min-cardinality-exp> ::=
min-cardinality <%INTEGER> [ <expression> ]
<cardinality-exp> ::=
cardinality <%INTEGER> [ <expression> ]
<expression> ::=
<class-exp> | <concrete-type-exp>
<concrete-type-exp> ::=
<int-exp> | <string-exp>
<int-exp> ::=
integer |
( <int-pred> <%INTEGER> ) |
( range <%INTEGER> <%INTEGER> ) |
( <int-exp> ( and <int-exp> )+ ) |
( <int-exp> ( or <int-exp> )+ ) |
( not <int-exp> )
<int-pred> ::=
min | max | greater-than | less-than | equal
<string-exp> ::=
string |
( <string-pred> <%STRING> ) |
( range <%STRING> <%STRING> ) |
( <string-exp> ( and <string-exp> )+ ) |
( <string-exp> ( or <string-exp> )+ ) |
( not <string-exp> )
<string-pred> ::=
min | max | greater-than | less-than | equal
<slot-definition> ::=
slot-def <slot-name>
[ documentation <%STRING> ]
[ <subslot-exp> ]
( <slot-def-exp> )*
<subslot-exp> ::=
subslot-of <slot-name>+
<slot-def-exp> ::=
<domain-exp> |
<range-exp> |
<inverse-exp> |
<property-list>
<domain-exp> ::=
domain <class-exp>+
<range-exp> ::=
range ( <class-exp>+ | <concrete-type-exp>+)
NOTE - it is good practice to restrict the range to a concrete type when a slot is to be used in that context, e.g., "slot-def age range integer"
<inverse-exp> ::=
inverse <slot-name>+
<property-list> ::=
properties <property>+
<property> ::=
transitive | symmetric | functional
NOTE - transitive and functional are disjoint
<axiom> ::=
<disjoint-exp> |
<cover-exp> |
<disjoint-cover-exp> |
<equiv-exp>
<disjoint-exp> ::=
disjoint <class-exp> <class-exp>+
<cover-exp> ::=
covered <class-exp> by <class-exp>+
<disjoint-cover-exp> ::=
disjoint-covered <class-exp> by <class-exp>+
<equiv-exp> ::=
equivalent <class-exp> <class-exp>+
symbols are a sequence of letters, digits and hyphens, starting with a letter
<class-name> ::=
<symbol>
<slot-name> ::=
<symbol>
<ind-name> ::=
<symbol>
<symbol> ::= [A-Za-z][-A-Za-z0-9]*
raw approximations of types
<URI> ::=
<%STRING>
<symbol> ::=
<%STRING>

DefinitionsXRefNotesQuestions

Cross-Reference Section

<%INTEGER> is used in
<filler>, <max-cardinality-exp>, <min-cardinality-exp>, <cardinality-exp>, <int-exp>
<%STRING> is used in
<container>, <class-definition>, <filler>, <string-exp>, <slot-definition>, <URI>, <symbol>
<URI> is used in
<container>, <import-exp>
<axiom> is used in
<definition>
<cardinality-exp> is used in
<constraint-exp>
<class-definition> is used in
<definition>
<class-exp> is used in
<subclass>, <class-exp>, <has-value-exp>, <value-type-exp>, <expression>, <domain-exp>, <range-exp>, <disjoint-exp>, <cover-exp>, <disjoint-cover-exp>, <equiv-exp>
<class-name> is used in
<class-definition>, <class-exp>
<concrete-type-exp> is used in
<has-value-exp>, <value-type-exp>, <expression>, <range-exp>
<constraint-exp> is used in
<slot-constraint>
<container> is used in
<ontology>
<cover-exp> is used in
<axiom>
<definition> is used in
<definitions>
<definitions> is used in
<ontology>
<disjoint-cover-exp> is used in
<axiom>
<disjoint-exp> is used in
<axiom>
<domain-exp> is used in
<slot-def-exp>
<equiv-exp> is used in
<axiom>
<expression> is used in
<max-cardinality-exp>, <min-cardinality-exp>, <cardinality-exp>
<filler> is used in
<filler-exp>
<filler-exp> is used in
<constraint-exp>
<has-value-exp> is used in
<constraint-exp>
<import-exp> is used in
<definitions>
<ind-name> is used in
<set-exp>, <filler>
<int-exp> is used in
<concrete-type-exp>, <int-exp>
<int-pred> is used in
<int-exp>
<inverse-exp> is used in
<slot-def-exp>
<max-cardinality-exp> is used in
<constraint-exp>
<min-cardinality-exp> is used in
<constraint-exp>
<ontology> was defined but never used.
<property> is used in
<property-list>
<property-list> is used in
<slot-def-exp>
<range-exp> is used in
<slot-def-exp>
<set-exp> is used in
<class-exp>
<slot-constraint> is used in
<class-definition>, <class-exp>
<slot-def-exp> is used in
<slot-definition>
<slot-definition> is used in
<definition>
<slot-name> is used in
<slot-constraint>, <slot-definition>, <subslot-exp>, <inverse-exp>
<string-exp> is used in
<concrete-type-exp>, <string-exp>
<string-pred> is used in
<string-exp>
<subclass> is used in
<class-definition>
<subslot-exp> is used in
<slot-definition>
<symbol> is used in
<class-name>, <slot-name>, <ind-name>
<type> is used in
<class-definition>
<value-type-exp> is used in
<constraint-exp>

DefinitionsXRefNotesQuestions

Notes


DefinitionsXRefNotesQuestions

Questions