AROM Knowledge Representation in AROM AROM Documentation Download AROM Contacts Partners
 
 
Language   

The content of an AROM knowledge base can be described in a textual format through the AROM language. The BNF of this language presented here is supported by the parser provided by the AROM API.

Notation

  • terminal : terminals of the language rea bold.
  • R1 | R2: R1 or (exclusive) R2.
  • [R]: zero or one occurence of rule R.
  • [R]*: zero or more occurences of rule R
  • [R]+: one or more occurences of rule R.
  • Comments

    Comments follow the C style comments. /* begins a comment and */ terminates it. Single line comments are preceded by // characters.

    BNF Rules

    kb	::= knowledge-base: idf-objet [kb-descriptors][kb-components]
    
    kb-descriptors	::= [kb-descriptor]+
    
    kb-descriptor 	::= documentation: string 
    
    kb-components	::= [kb-component]+
    
    kb-component	::= 
    		   | class 
    		   | association
    		   | instance
    		   | tuple
    

    Classes

    class-description::= class: idf-composant [class-descriptor]+
    
    class-descriptor ::= super-class: [idf-composant]
    		   | variables: [variable-description]+
    		   | documentation: string
    
    variables	 ::= [variable]+
    
    variable 	 ::= variable: idf-objet
    		 [variable-descriptors] 
    
    variable-descriptors 	::= [variable-descriptor]+
    
    variable-descriptor 	::=  type: type
    		           | domain: domain
    		           | cardinality: variable-cardinality
    		           | documentation: string
    		           | default: value
    
    variable-cardinality	::= min-bound max-bound
    
    min-bound ::=   | min: entier
    
    max-bound ::=   | max: entier
                    | max: *
    
    type 	  ::= base-type | [set-of: | list-of: ] base-type 
    
    domain	  ::= domain-set | domain-interval 
    
    domain-interval ::= [value..value] 
    
    domain-set 	::= {values} 
    
    values	::= value | values,value 
    

    Associations

    association 	::= association: idf-composant
    	 	[super-association-descriptor] [association-descriptors] 
    	 	roles: [roles] [association-variables] 
    
    super-association-descriptor::= super-association: idf-objet 
    
    association-descriptors     ::= [association-descriptor]+ 
    
    association-descriptor 	    ::= documentation: string 
    
    association-variables 	    ::= variables: [variables] 
    
    roles 	::= [role: idf-objet [role-descriptors] ]+ 
    
    role-descriptors ::= [role-descriptor+] 
    
    role-descriptor  ::= type: idf-objet
    		   | domain: domain-role
    		   | multiplicity: role-multiplicity 
    		   | documentation: string
    
    domain-role      ::=  { instance-values }
    
    instance-values  ::= idf-objet
                      | instance-values , idf-objet
    
    role-multiplicity ::= min-bound max-bound
    

    Instances

    instance 	::= instance: idf-objet 
    		    is-a: idf-objet
    		    [instance-descriptors] 
    
    instance-descriptors 	::= [instance-descriptor]+
    
    instance-descriptor 	::= idf-composant = value
    		          | documentation: string 
    

    Tuples

    tuple 	::= tuple: 
    	    is-a: idf-objet
    	    [tuple-descriptors] 
    
    tuple-descriptors ::= [tuple-descriptor]+ 
    
    tuple-descriptor  ::= idf-composant = value
    		    | documentation: string 
    

    base-type::= integer | float | string | boolean | idf-objet 
    
    value 	 ::= constant
    	   | { constant [,constant]* }
    	   | [ constant [, constant]*]
    
    constant ::= string | integer | real | idf-objet | boolean 
    
    integer  ::= [chiffre]+
     
    real 	 ::= integer.integer [(e|E) integer] 
    
    string 	 ::= "[car]*" 
    
    boolean  ::= true | false 
    
    idf-objet::= [lettre-maj lettre-min][car-idf-composant]* 
    
    car-idf-composant ::= lettre-maj | chiffre | _ 
    
    lettre-maj::= A | ... | Z 
    
    lettre-min::= a | ... | z 
    
    chiffre   ::= 0 | ... | 9