Syntax of Discourse Representation Structures (DRSs)

The Prolog syntax of DRSs is defined below in BNF. There are basic and complex DRSs:

<drs> ::= <basic-drs> |
          <complex-drs> 

A basic DRS comprises a set of discourse referents and a set of DRS-conditions. Note that all discourse referents and DRS-conditions are prefixed by a list of indices that refer to word positions.

<basic-drs> ::= drs(<referents>,<conditions>)

<referents> ::= [] |
                [<indices>:<referent>{,<indices>:referent>}]

<conditions> ::= [] |
                 [<indices>:<condition>{,<indices>:condition>}]

<indices> ::= [] |
              [<number>{,<number>}]

<referent> ::= <prolog-atom> |
               <prolog-variable>

Complex DRSs are constructed with the merge (conjoining two DRSs), the sentence-merge (conjoining two DRSs denoting sentences) or with alfa (representing anaphoric or presuppositional information).

<complex-drs> ::= merge(<drs>,<drs>) |
                  smerge(<drs>,<drs>) |
                  alfa(<alfa-type>,<drs>,<drs>)

The alfa-type specifies the kind of anaphoric information: anaphoric pronoun, definite description, proper name, reflexive pronoun, or deictic pronoun.

<alfa-type> ::= pro |
                def |
                nam |
                ref |
                dei

There are basic and complex DRS-conditions:

<condition> :: = <basic-condition> |
                 <complex-condition>

The basic conditions are one-place properties (predicates), two-place properties (relations), named entities, time-expression, cardinal expressions, or equality:

<basic-condition> ::= pred(<referent>,<symbol>,<pos-type>,<sense>) |
                      rel(<referent>,<referent>,<symbol>,<sense>) |
                      named(<referent>,<symbol>,<ne-type>,<sense>) |
                      timex(<referent>,<time-expression>) |
                      card(<referent>,<number>,<cardinality-type> |                   
                      eq(<referent>,<referent>)

The part of speech type gives more information on the kind of predicate: noun, verb, or adjective/adverb. Note that predicates with the same symbol but with different part of speech type are considered to be different predicates.

<pos-type> ::= n | 
               v |
               a

The sense is denoted by a positive integer (for instance a WordNet? sense) or by 0 if the sense is unknown:

<sense> ::= 0 | 1 | 2 | ...

Named entity types comprise organsiation, person, title, quoted, location, first name, surname, url, email, or just name when unknown:

<ne-type> ::= org | 
              per | 
              ttl |  
              quo | 
              loc | 
              fst | 
              sur | 
              url |
              ema |
              nam

The cardinality type is equal, less or equal, or greater or equal.

<card-type> ::= eq |
                le |
                ge 

Time expressions follow more or less the syntax of TimeML.

<time-expression> ::= date(<indices>:<pol>,<indices>:<year>,<indices>:<month>,<indices>:<day>) |
                      time(<indices>:<hour>,<indices>:<minute>,<indices>:<second>)

<pol> ::= + | -

<year> ::= '0001' | '0002' | ... | '9999'

<month> ::= '01' | '02' | ... | '12'

<day> ::= '01' | '02' | ... | '07'

<hour> ::= '00' | '01' | ... | '23'

<minute> ::= '00' | '01' | ... | '59'

<second> ::= '00' | '01' | ... | '59'

The complex DRS-conditions express disjunction, implication, negation, a question, or a propositional attitude:

<complex-condition> ::= or(<drs>,<drs>) |
                        imp(<drs>,<drs>) |
                        not(<drs>) |
                        whq(<answer-type>,<drs>,<referent>,<drs>) |
                        prop(<refererent>,<drs>)

Example

As an example, consider the DRS for Every man loves Mia.

drs([[4]:Y],
    [[4]:named(Y,mia,per,0),
     [1]:imp(drs([[1]:X],
                 [[2]:pred(X,man,n,1)]),
             drs([[3]:E],
                 [[3]:pred(E,love,v,0),
                  [3]:rel(E,X,agent,0),
                  [3]:rel(E,Y,patient,0)]))])

Fixed Symbols

There is a set of fixed symbols used in basic DRS conditions. One-place predicates:

  • topic,a,1 (elliptical noun phrases)
  • thing,n,12 (used in NP quantifiers: 'something', etc.)
  • person,n,1 (used in first-person pronouns, 'who'-questions)
  • event,n,1 (introduced by main verbs)
  • group,n,1 (used for plural descriptions)
  • reason,n,2 (used in 'why'-questions)
  • manner,n,2 (used in 'how'-questions)
  • proposition,n,1 (arguments of propositional complement verbs)
  • unit_of_time,n,1 (used in 'when'-questions)
  • location,n,1 (used in 'there' insertion, 'where'-questions)
  • quantity,n,1 (used in 'how many')
  • amount,n,3 (used in 'how much')
  • degree,n,1
  • age,n,1
  • neuter,a,0 (used in third-person pronouns: it, its)
  • male,a,0 (used in third-person pronouns: he, his, him)
  • female,a,0 (used in third-person pronouns: she, her)
  • base,v,2
  • bear,v,2

Two-place relations:

  • rel,0 (general, underspecified type of relation)
  • loc_rel,0 (locative relation)
  • role,0 (underspecified role: agent,patient,theme)
  • member,0 (used for plural descriptions)
  • agent,0 (subject)
  • theme,0 (indirect object)
  • patient,0 (semantic object, subject of passive verbs)