Tutorial :Vetting Second Hand Knowledge in an Ontology


How would you assign objective certainties to statements asserted by different users in an ontology?

For example, consider User A asserts "Bob's hat is blue" while User B asserts "Bob's hat is red". How would you determine if:

  1. User A and User B are referring to different people named Bob, and may or may not be correct.
  2. Both users are referring to the same person, but User A is right and User B is mistaken (or vice versa).
  3. Both users are referring to the same person, but User A is right and User B is lying (or vice versa).
  4. Both users are referring to the same person, and both uses are either mistaken or lying.

The main difficulty I see is the ontology doesn't have any way to obtain first-hand data (e.g. it can't ask Bob what color his hat is).

I realize there's probably no entirely objective way to resolve this. Are there any heuristics that could be employed? Does this problem have a formal name?


I'm not an expert in this field, but I've worked a bit with uncertainties in ontologies and the Semantic Web. There are, of course, approaches to this problem that have nothing to do with the semantic web, but my knowledge ends there.

Two problems that I feel are connected with your question are the Identity Crisis and the URI crisis. Formal representations of the statements above can be issued in RDF (Resource Description Framework).

If I convert the statementss "Bob's hat is blue/red" into triples, this would be:

Fact 1:

  • X isA Person
  • X hasName "Bob"
  • X possesses H1
  • H1 isA Hat
  • H1 hasColor Blue

Fact 2:

  • Y isA Person
  • Y hasName "Bob"
  • Y possesses H2
  • H2 isA Hat
  • H2 hasColor Red

The problem here is that X, Y, H1 and H2 are resources, which may or may not be the same. So in your example it is unknown if X and Y are the same person or distinct and you can't know without further information. (Same holds for the hats.)

However, the problem is more complex, because User A and B just stated those things, so they are no "real" facts. RDF offer the method of Reification for this, but I won't write this down here completely, it would be too long. What you basically would do is add an "UserA statesThat (...)" to every above mentioned statement.

If you have all this, you can start reasoning. At the university we once used RACER for this kind of stuff, but that was an old version and I'm not familiar with the current one.

Of Course, you can do that stuff without RDF as well, e.g., in LISP.

Hope it helped.


I have heard this kind of thing being referred to as information fusion, mirroring the idea of data fusion. I don't know much about it but it seems there are conferences on the subject.

I'd also add another difficulty here, that of distinguishing between objective and subjective information. If user A says 'Bob is a nice guy' and user B says 'Bob is not a nice guy' then they can both be right while asserting seemingly opposing statements.


Step 1: Make some assumptions. Otherwise, you have nothing to base anything on. A possible assumption would be, "If bob's hat is red, there is a 90% that User A will say his hat is red."

Step 2: Apply relevant math. To relate a conditional probability to its inverse (i.e. to ask the probability that bob's hat is red knowing what A said based on the assumption I proposed), use Bayes Theorem.

Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Next Post »