We have all seen UI for building complex data stru...
# thinking-together
j
We have all seen UI for building complex data structures based on a schema with references. Jason is a person, bob is a person, bob is a friend of Jason, etc. I am designing something similar, but I want it to give the user the ability to also make partially ground and unground statements, and to specify that fully ground, partially ground, or unground statements have an open/closed world assumption applied to them. Has anyone seen a user interface for that?
The sorts of things it should let you say include: Jason is a Person Bob is a Person Jason is Bob's Friend Plus partially ground statements: Everything is Bob's Friend Bob is Everything's Friend Plus unground statements: Everything is a Person Everything is Everything's Friend Plus the ability to make any of those statements replacing "is" with "might be". I am aware of "statement builder" interfaces. I'm looking for something more visual, less linguistic, like nested trees, or graphs.
n
I doubt someone has made a user interface specifically for the semantics you are describing — it sounds like you're doing something very niche. I'd encourage you to come up with your own design 🙂.
j
I don't think it's "niche", so much as "novel", but I take your point. Just don't want to duplicate any effort.
n
Yes, sorry, perhaps I should have used the term novel/unique instead.
j
j
@Jack Rusher I'm aware of webprotege, at least, but I'm not aware where it allows you to say things like "it is not the case that jason is bob's sibling". It has always seemed like you can only make positive assertions. Is that not so?
j
@Jason Morris The way you'd do this in semweb terms is to create an ontology that admits the possibility of a negation value and then assert a triple containing that negation. The way you've outlined your various truth values above makes it slightly unclear what semantics you want for your reasoner, but that's downstream from modeling.
j
The reasoner is s(CASP). Stable model goal directed answer set programming with constraints. Each predicate
p(X)
has a logically negated opposite
-p(X)
. And you can force at least one to be true in every model with
-p(X) :- not p(X). p(X) :- not -p(X).
, which has a shorthand
#abducible p(X).
, which is what I mean by "maybe". So similar to the semweb approach (mutually exclusive opposites), but I maybe not with regard to multiple world semantics, or even loops over negation, etc? Not sure. If what I'm trying to model is what the user knows, I need to be able to model "I know it is either true or false, but I don't know which". Which is why I think of the "maybe" as part of the model, not part of the reasoning. Does that make sense, or am I missing something.
j
What I mean by "what you want for your reasoner" is that many different policies are possible within most implementations. For example, you can model your "assertions" using a {true, false, maybe} terminal value to get something like what I think you want. Although it sounds like "maybe" is actually "unknown" from the perspective of the system?
j
"maybe" here means "in every model either true or false holds". It isn't a third value, it is a constraint that in any model only two of the five possible truth values that might hold actually do. A trinary model doesn't have a "not guilty" separate from "innocent". Sometimes you don't need to be able to derive falsehood, you just need to know you can't derive truth.
Unknown is one of the original five. Known true, known false, not known false, not known true, and unknown.