The idea of RDF is a good one, at the beginning. The implementation has some holes I'm surprised I don't see ready answers for.
The basic idea is this. Everything can be defined in terms of relationships of everything else. These relationships are of the form "subject" "predicate" "object", where "object" must be a literal value or a name of something.
The problem is this: I don't see how you can reference RDF facts with the above simple schema. For instance, let's say you have a predicate called "said", meaning, something said something. You can do this:
- Tom said "Hello!"
- Tom said Bill
But you can't do something like this:
- Tom said (Bill has name of "Bill")
It's not the end of the world. All you need to do is allow the object or subject to be a fact itself. Now you can have:
- A is "A"
- B is "B"
- B is-after A
- English-alphabet-rules state (B is-after A)
If you have a predicate to impart a name on something (which is what "is" is above), then you can name your facts and do all sorts of interesting things with facts about facts.
- guilty is (Tom murdered Bill)
- innocent is (Tom did-not-murder Bill)
- Tom thinks innocent
- Tom hopes (jury declare innocent)
- Fred thinks guilty
- jury declare guilty
- (Tom is sad) because ((Tom hopes (jury declare innocent)) and (jury declare guilty))
There you have it!