Re: [protege-user] [EXT] Modeling Beliefs in OWL?
Robert Goldman <[email protected]>
| Newsgroups | gmane.comp.misc.ontology.protege.owl |
|---|---|
| Message-ID | <[email protected]> |
To follow up, there's a pretty extensive literature on the uses of
epistemic logic in GOFAI: I remember taking a class in it during
graduate school longer ago than I care to mention here.
The core challenge that arises is that quantifying over predicates in
general, leads to second order logic, which is either unsound or
incomplete. It lets you encode paradoxical statements about beliefs,
see [Russell's
Paradox](https://en.wikipedia.org/wiki/Russell's_paradox).
To avoid these paradoxes, logicians developed first order logic, which
is not subject to them, but that also removes obvious approaches to
epistemic reasoning.
AFAIK, there are broadly speaking two approaches to overcoming the
limitations of first order logic with respect to epistemics:
1. Modal logics of knowledge and belief. These give only limited second
order reasoning using modal operators, often characterized as belief and
knowledge. Briefly, one characterizes belief in terms of possible
worlds. We say that an agent believes that we exist in one of a number
of possible worlds, but absent perfect knowledge, does not know which
one. A proposition (better term to use than "fact" in this context) is
believed if it is true in at least one of the possible worlds, and known
if it is true in all possible worlds. Note that "plausible" might be a
better term than "believed" for this...
You might think of this approach as being akin to your named graphs
approach. The named graphs represent possible worlds, and you can think
of belief relations (modalities) as relations between an agent and one
or more named graphs.
Note, btw, that modal logics often have more complex accessibility
relations than just possible worlds. A "possible world" is possible
because it's "belief accessible." One might have more refined relations
such as preferred worlds, etc.
2. String encodings. Encode beliefs as strings in the logic. Paradoxes
aren't possible because the strings are not themselves formulas of the
logic: instead they are objects to be manipulated by the logic. I
suppose punning is a rough equivalent of this approach. It can be
challenging because if strings are just arbitrary data, you must develop
a complex set of formulas to capture what one can conclude about agents'
beliefs in strings. P.S. Note: don't read too much into the term
"string" here! This is not a commitment to ordered lists of byte codes
as data representations! Just that the representations are effectively
string-like. Most actual schemes will use some representation --
s-expressions, or equivalent tree-like structures -- that has more
syntax than just programming language strings.
As I said, there's a pretty expansive literature about this, so you can
probably avoid some unforced errors by doing a little literature review.
Ernie Davis's [Representations of Commonsense
Knowledge](https://cs.nyu.edu/~davise/rck/rck.html), available on line,
is probably a good place to start.
Cheers,
R
On 23 Jan 2025, at 22:07, Samson Tu wrote:
> Michael,
>
> Modeling agents' beliefs take you into the realm of epistemic
> logic<https://plato.stanford.edu/entries/logic-epistemic/> , which
> goes beyond first-order logic. I think punning is indeed the mechanism
> to simulate such logic in OWL 2. However, I don’t understand your
> modeling of “Belief.” Why do you need such a class? Can’t you
> just have property assertions the Michael individual believes P, where
> P is a Proposition modeled using your hasSubject, hasPredicate, and
> hasObject properties? Maybe you can have an additional Boolean
> property, “isTrue,” to indicate whether proposition P is true or
> false. If P is (Cat1 isOn Mat1) maybe use a SWRTL rule to assert that
> P isTrue true if (Cat1 isOn Mat1) is in the ontology. That way we can
> reason about whether Michael’s belief is true or false.
>
> Samson
>
> On Jan 23, 2025, at 4:16 PM, Michael DeBellis
> <[email protected]> wrote:
>
> Steve, good point. By fact I didn't mean to imply it is true, merely
> that it is a state of the world that is possible. But I agree calling
> it a Fact is misleading. I actually think in the previous work where I
> used this model I called it a State. The reason I didn't use State is
> I want this to be understandable to social scientists and I'm not sure
> they would know this meaning of State. I also used the term
> Proposition in previous work and I think that might be the best here
> but definitely not Fact. Another option is Statement but that implies
> someone said it. I just looked up Proposition on Wikipedia and I think
> that is the proper term rather than Fact:
> https://en.wikipedia.org/wiki/Proposition Let me know if you disagree,
> thanks for the feedback.
>
> Michael
>
> On Thu, Jan 23, 2025 at 1:35 PM Wartik, Steven P "Steve"
> <[email protected]<mailto:[email protected]>> wrote:
> Michael,
>
> I am curious about your first approach. How do you adjudicate what
> individuals are members of class Fact? I hardly need point out the
> practical difficulties in this day and age. And for that matter, what
> does it mean for an individual to be a member of class Fact?
> Especially in the context of your Belief class. If f is a Fact, b is a
> Belief, and b hasFact f, then what’s the point of calling something
> a belief if f is accepted to be truth?
>
> On reflection, it seems to me that a member of class Fact is, in your
> interpretation, something that someone believes to be a fact,
> independent of whether or not it actually is a fact. Is that correct?
> If so, “Fact” is kind of a misleading name.
>
> The approach may get you into trouble if you try reasoning. I can see
> a knowledge graph simultaneously containing the following two beliefs:
>
>
> 1. Belief 1: Person 1 thinks the average global temperature has
> risen 1.5° since 1990.
> 2. Belief 2: Person 2 thinks the average global temperature has
> risen 0.5° since 1990.
>
> To express this according to your approach, you’re going to have
> pairs of triples independent of the beliefs:
>
>
> 1. Fact 1: The average global temperature has risen 1.5° since
> 1990.
> 2. Fact 2: The average global temperature has risen 0.5° since
> 1990.
>
> Because reasoners don’t know about your Belief class, they might
> choke on something like this. It’s hard to say without a full model.
> Just something to keep in mind as you proceed.
>
> Steve Wartik
>
>
> From: protege-user
> <[email protected]<mailto:[email protected]>>
> On Behalf Of Michael DeBellis
> Sent: Thursday, January 23, 2025 3:04 PM
> To: User support for WebProtege and Protege Desktop
> <[email protected]<mailto:[email protected]>>
> Subject: [EXT] [protege-user] Modeling Beliefs in OWL?
>
> *** This email originated outside of IDA. Please verify that you
> recognize the sender and know the content is safe before proceeding.
> ***
>
> I'm developing an ontology based on an informal model created by some
> social scientists to model Climate Obstruction and Green Washing. I'm
> starting with the Gist upper model (but to the extent I understand
> Gist, I think the following question is bit more theoretical than
> what they typically model).
>
> One thing I want to model is beliefs. The problem of course is that
> since Gist is logical it can't handle axioms that contradict each
> other and different people believe contradictory things I've thought
> of two ways to do it and I'm interested in any feedback people have.
>
> Also, while the eventual knowledge graph will be large (millions of
> triples at least) the size won't come from beliefs. E.g., I'm not
> going to need to model thousands of different belief systems. I'll be
> using individual people as examples and perhaps also groups of people
> (e.g., the goal of an Exxon PR program is to convince the
> AmericanConsumer that decreased use of fossil fuel will be bad for the
> economy). Both Person and Organization are subclasses of Agent and
> Agent is the domain for believes.
>
> Approach 1). Reified triples. Create a class called Fact. Create
> object properties hasSubject, hasPredicate, hasObject, where each
> property's domain is Fact and the range is undefined. Then a Class
> called Belief with an object property hasFact. A belief consists of
> one or more facts. So to model Michael thinks Cat1 is on Mat1 create a
> Fact (Cat1OnMat1) with subject = Cat1, Predicate = isOn and object =
> Mat1. Make a belief object that consists of this fact Cat1OnMat1Belief
> and an object property believes and the triple Michael believes
> Cat1OnMat1Belief. You can assert a Fact is true with a simple Python
> function or even just a sparql query that gets the triple values and
> asserts them.
>
> Issues: Have to pun all the values for hasPredicate since those need
> to be properties. I've had bad experiences when using lots of puns.
> Honestly, I'm not sure if the problems are from AllegroGraph, Protege
> or using them together (which I do all the time without problems
> except when I have lots of puns). I've never spent enough time to
> figure out what the specific problem(s) are because I found whatever
> was going wrong I could make it go away by using annotation properties
> and no puns... actually another option would be to make hasPredicate
> an annotation rather than object property.
>
> Approach 2): Use named graphs and only do reasoning within each graph.
> This seems simpler. So for each Agent's beliefs we would just have a
> named graph called MichaelBeliefs, AlansBeliefs, etc.
>
> Issues: How to model the connection between an Agent and their
> Beliefs. Since I don't think OWL understands what a named graph is
> because its an RDF concept not a logical concept. I think I could
> create an annotation property that points from the Agent to each named
> graph.
>
> I was leaning toward 1 which I've done before (on a very small scale)
> but after talking to a colleague I'm leaning toward 2.
>
> Interested in any critique, feedback, other ideas and/or pointers to
> relevant papers.
>
> Cheers,
> Michael
> https://www.michaeldebellis.com/blog
> _______________________________________________
> protege-user mailing list
> [email protected]<mailto:[email protected]>
> https://mailman.stanford.edu/mailman/listinfo/protege-user
> _______________________________________________
> protege-user mailing list
> [email protected]
> https://mailman.stanford.edu/mailman/listinfo/protege-user
> _______________________________________________
> protege-user mailing list
> [email protected]
> https://mailman.stanford.edu/mailman/listinfo/protege-user
_______________________________________________
protege-user mailing list
[email protected]
https://mailman.stanford.edu/mailman/listinfo/protege-user