|Think about Loose Coupling|
Anon has it right when s/he suggests a DB to build an internal "database". If you're looking for schemas, I'd look at doing a traits-type thing. Essentially, you'd have a table of things ("giving", "ovid", "book", "merlyn") and you'd have another table to associate them together as attributes of each other.
You'd also have to have subordinate relationships, ala "This book has this title" ... "All mammals have hair" ... etc. Those statements already have easy translations to SQL.
This reminds me of Aristotelian logic and those circle diagrams. "All mammals have hair." "All mammals give birth live." "Some fish give birth live." "Do some fish have hair?" and be able to solve that.
(Yes, I'm rambling, but this is a wonderful topic.)
Does Prolog have "and" or "or" capabilities? Those could be useful. However, I would be very careful about working "if-then" of any sort in just yet. If you're curious why, we can get a nice OT meditation going, but it's beyond the scope of this thread.
Don't go borrowing trouble. For programmers, this means Worry only about what you need to implement.