Question 3 was the most interesting but data on parsing remarkably incomplete. As far as I can tell, we have only lists of possible ways to break down the data without any explanation of how or why one possible way is preferred to another. Case in point (1):How it decides to treat "Treasure Island" as a proper noun. We see only "modifies(Treasure, Island)" -- indicating that it treats treasure and adjective modifying…
The sample queries struck me as Prolog rather than Java, even before they mentioned it. Using Prolog would allow testing the combination of various propositions in addition to the individual values. This would imply that they derive a list of possible assertions, then try combinations of those assertions and see what values of X will match those assertions. How they avoid combinatorial explosion when testing all those assertion combinations, I have no idea, but it must involve ranking and pruning.