thinking about semantic relations and inferencing
I've been giving this a lot of thought. The idea is to implement something very simple, but usable.
Relations
Relations would be implemented using CSecs. There will be two forms: R(x), where x is the parent of the CSec, and R(x,y), where y is referenced by the CSec. R itself would either be a topic referenced by the CSec or a special relation.
Special Relations
Some relations, especially relations about relations, would be named in a *.relations file, where a subclass of the Relations class is bound to the name. These names would begin with "_".
Special relations would include _KindOf, _Communitive and _Transitive.
So for example, if _Communitive(Brother) and _Transitive(Brother), and Brother(Sam,John) and Brother(Fred,John), then we can infer:
Brother(John,Sam), Brother(John,Fred), Brother(Sam,Fred) and Brother(Fred,Sam).
The inference Command
The inference command would operate only within the infoset of the current rolon. So, for the above example to work, Brother, John, Sam and Fred would all need to be in the current infoset.
The output of the inference command will be a (new or existing) LSec named Inferences, under the current rolon. (On completion, the Inferences LSec becomes the current rolon.)
Applications which use inferencing then can compare the latest results with eariler results to determin what has changed.
Sound simple enough? Remember that we're only intending to make it easy for an application to work with relations between topics/lsecs. Call it ai, not AI.
Why a Limited Infoset is Essential
Consider now _KindOf(Relation,Brother). Adding this to the above example, we should also be able to infer Relation(John,Sam). But note that the number of things we can infer just jumped from 4 to 10. This is why it is so important to use a reasonably small infoset.
The inference command may throw an error if the infoset is too large, or if the number of inferences is too large.
Bill
0 Comments:
Post a Comment
<< Home