Feature Structures

Discussion of features [JM]:

Consider the situation with n features belonging to a grammar element:

[Feature1     Value1 ]
[Feature2     Value2 ]

     :    

[Featuren     Valuen ]

For example, consider the features one might want to ascribe to a NP:

--                       --
|Category              NP  |
|Number                SG  |
|Person                3   |
--                       -- 

There are any number of ways this might be achieved in Prolog:

entity(cat(np),number(sg),person(third))
Or
np(number(sg),person(third))

The plural version of the given attribute structure would look like this:

--                       --
|Category              NP  |
|Number                PL  |
|Person                3   |
--                       -- 

In general, higher order qualification of attributes wouild need to be considered:

--                          --
|Category                 NP  |
|             --          --  |
|            |Number    SG  | |
|Agreement   |              | |
|            |Person    3   | |
|            --           --  |
--                          -- 

Graphically, as might be considered when view attributes hanging off of a parse tree:

                        attachment point         
                             /  \                   
                            /    \                   
                           /      \                   
                          /        \                   
                         /          \                   
                        /            \                   
                       /              \                   
                    Category       Agreement
                    /                /  \
                   /                /    \
                 NP                /      \
                                Number   Person
                                 /         \    
                                /           \   
                               /             \  
                            SG                3  

Prolog code might look like this:

np(category('NP'), agreement(number('SG'), person('3')) -->

Head/Subject Agreement:

--                                          --
|Category   Sentence                          |
|             --              --      --      |
|            |Agreement _1_  |Number  SG|     |
|Head        |               |Person  3 |     |
|            |                        --      |
|            |             --         --      |
|            |Subject     |Agreement _1_|     |
|            --           --          --      |
--                                          -- 

In Prolog:

entity(cat(sentence),head(agreement(number(sg),person(third)),
                          subject(agreement(number(sg),person(third)))))
Or
sentence(head(agreement(number(sg),person(third)),
              subject(agreement(number(sg),person(third)))))

This would have arisen as synthesized from something like:

sentence(head(agreement(number(NUM),person(PER)),
              subject(agreement(number(NUM),person(PER))))) -->

        np(head(agreement(number(NUM),person(PER)),
              subject(agreement(number(NUM),person(PER))))).