You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The current design for representing LG disjuncts is incorrect, for several reasons, explained below. The most urgent of these is that it results in bug #650, and SQL table overflow bug.
Besides the SQL bug, there are two other problems, one of which is extremely serious: first, imagine an agent that is trying to learn a language. This requires learning new disjuncts, and adding them to the set; and possibly removing others. For the above, that requires deleting the 8210-element of the LgOr and replacing with with another one that is 8211 or 8209 or whatever. Yuck!
Yucky, but there is also a show-stopper here: the above format makes it completely impossible to track disjunct usage statistics! For example, suppose we want to know how often the connector A- is used with "drink". Where can we store this count? Not in the A- connector, because it is used in many, many different words. And not in the LgWordCset because that doesn't tell you which disjunct is being used. Thus, the above representation must be replaced. I propose the below ...
This avoids the huge outgoing set. Adding and removing new disjuncts is trivial. And finally, there is a perfect place to store per-disjunct statistics. (Side comment: it also illustrates why a fast cog-fetch-incoming-set is important: to fetch the above from SQL, one would (cog-fetch-incoming-set (WordNode "drink")) and get the 8210 entries back.)
Also a different problem: I'm guessing that each and every use of the LgOr link type is probably wrong. First, it should have been called LgChoice because its not a logical-OR, its a choice. Next, to be usable, the choices need to be in "disjunctive normal form" (DNF) and, philosophically speaking, the atomspace is a "DNF engine" -- every top-level link is a DNF of all other links. Its what the atomspace is all about. That's a more abstract argument as to why LdDisjunct is "correct", while LgOr is "wrong".
The text was updated successfully, but these errors were encountered:
The current design for representing LG disjuncts is incorrect, for several reasons, explained below. The most urgent of these is that it results in bug #650, and SQL table overflow bug.
To see the issue, do this:
which reports a link with an outgoing set with 8210 members in it. It looks like this, if you print it out:
Besides the SQL bug, there are two other problems, one of which is extremely serious: first, imagine an agent that is trying to learn a language. This requires learning new disjuncts, and adding them to the set; and possibly removing others. For the above, that requires deleting the 8210-element of the LgOr and replacing with with another one that is 8211 or 8209 or whatever. Yuck!
Yucky, but there is also a show-stopper here: the above format makes it completely impossible to track disjunct usage statistics! For example, suppose we want to know how often the connector A- is used with "drink". Where can we store this count? Not in the A- connector, because it is used in many, many different words. And not in the
LgWordCset
because that doesn't tell you which disjunct is being used. Thus, the above representation must be replaced. I propose the below ...This avoids the huge outgoing set. Adding and removing new disjuncts is trivial. And finally, there is a perfect place to store per-disjunct statistics. (Side comment: it also illustrates why a fast
cog-fetch-incoming-set
is important: to fetch the above from SQL, one would(cog-fetch-incoming-set (WordNode "drink"))
and get the 8210 entries back.)Also a different problem: I'm guessing that each and every use of the
LgOr
link type is probably wrong. First, it should have been calledLgChoice
because its not a logical-OR, its a choice. Next, to be usable, the choices need to be in "disjunctive normal form" (DNF) and, philosophically speaking, the atomspace is a "DNF engine" -- every top-level link is a DNF of all other links. Its what the atomspace is all about. That's a more abstract argument as to whyLdDisjunct
is "correct", whileLgOr
is "wrong".The text was updated successfully, but these errors were encountered: