...
There could be some nice truth value math regarding these, e.g. we
could introduce Ellerman's "logical entropy" which is really a
partition entropy. There are also connections with some recent
theoretical work I've been doing on "graphtropy" (using "distinction
graphs" that generalize partitions), which I'll post a paper on
sometime in the next week or two.... But that will be another email
for another day...
-- Ben
Hi Linas,
The difference between PartitionLink and MemberLink is pretty obvious,
right?
A PartitionNode defines a partition of the set denoted by a
ConceptNode. The partition elements that are linked to the
PartitionNode by a PartitionLink can of course also be linked via a
MemberLink to the ConceptNode that corresponds to the PartitionNode.
However, the unique semantics of a partition is that of mutual
exclusivity and completeness, i.e. the intersection between two
distinct elements of the partition is null, and the union of the
elements of the partition is the set being partitioned.
> email to opencog+unsubscribe@googlegroups.com.
> To post to this group, send email to ope...@googlegroups.com.
> Visit this group at https://groups.google.com/group/opencog.
> To view this discussion on the web visit
--
Ben Goertzel, PhD
http://goertzel.org
"I am God! I am nothing, I'm play, I am freedom, I am life. I am the
boundary, I am the peak." -- Alexander Scriabin
--
You received this message because you are subscribed to the Google Groups "opencog" group.
To unsubscribe from this group and stop receiving emails from it, send an email to opencog+unsubscribe@googlegroups.com.
To post to this group, send email to ope...@googlegroups.com.
Visit this group at https://groups.google.com/group/opencog.
To view this discussion on the web visit https://groups.google.com/d/msgid/opencog/CACYTDBdm6M1y18G%3DQi%3D_rjJcdrEb5eAmx8ntxffKoRw_dG1OYw%40mail.gmail.com.
On 08/03/2017 10:06 AM, Linas Vepstas wrote:
There's also a problem of editing: what if, half-way through, you want to change the partition? Can you? should you? should users instead be told that a partition, once-created, is immutable, so you can only create and destroy them?
But isn't the same true for almost any link?
(Equivalence (stv 1 1) A (Or B C))
(And (stv 0 1) B C)
is immutable too, and could be equivalent to
(Partition (stv 1 1) A (Set B C))
saying that A is partitioned into block B and C.
Do you truly need a partition link? I mean - I invent new link types all the time, since that's usually pretty cheap. But I also do not expect my new link types to work with PLN. In this case, don't you want pln interop?
I agree about not creating new links up the wazzoo, it must be carefully thought. However, you don't necessarily need to upgrade PLN to reason on new links, if you can express the semantics of a new link as a combination of old links, all you need is to write a higher order fact such as
EquivalenceScope (stv 1 1)
$A $B $C
Partition $A (Set $B $C)
And
Equivalence $A (Or $B $C)
And $B $C
to enable PLN to reason about it.
Nil
<mailto:opencog%2Bunsubscribe@googlegroups.com>.> email to opencog+unsubscribe@googlegroups.com
> To post to this group, send email to ope...@googlegroups.com <mailto:opencog@googlegroups.com>.
> Visit this group at https://groups.google.com/group/opencog
<https://groups.google.com/group/opencog>.
> To view this discussion on the web visit
>
https://groups.google.com/d/msgid/opencog/CAHrUA35kQx%3DyDcLTynrThvi%3DrAVa15D-1PSwZpK_37Q%3DjZhcfw%40mail.gmail.com
<https://groups.google.com/d/msgid/opencog/CAHrUA35kQx%3DyDcLTynrThvi%3DrAVa15D-1PSwZpK_37Q%3DjZhcfw%40mail.gmail.com>.
> For more options, visit https://groups.google.com/d/optout <https://groups.google.com/d/optout>.
--
Ben Goertzel, PhD
http://goertzel.org
"I am God! I am nothing, I'm play, I am freedom, I am life. I am the
boundary, I am the peak." -- Alexander Scriabin
--
You received this message because you are subscribed to the Google
Groups "opencog" group.
To unsubscribe from this group and stop receiving emails from it,
send an email to opencog+unsubscribe@googlegroups.com
<mailto:opencog%2Bunsubscribe@googlegroups.com>.
To post to this group, send email to ope...@googlegroups.com
<mailto:opencog@googlegroups.com>.
Visit this group at https://groups.google.com/group/opencog
<https://groups.google.com/group/opencog>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/opencog/CACYTDBdm6M1y18G%3DQi%3D_rjJcdrEb5eAmx8ntxffKoRw_dG1OYw%40mail.gmail.com
<https://groups.google.com/d/msgid/opencog/CACYTDBdm6M1y18G%3DQi%3D_rjJcdrEb5eAmx8ntxffKoRw_dG1OYw%40mail.gmail.com>.
For more options, visit https://groups.google.com/d/optout
<https://groups.google.com/d/optout>.
--
You received this message because you are subscribed to the Google Groups "opencog" group.
To unsubscribe from this group and stop receiving emails from it, send an email to opencog+unsubscribe@googlegroups.com <mailto:opencog+unsubscribe@googlegroups.com>.
To post to this group, send email to ope...@googlegroups.com <mailto:opencog@googlegroups.com>.
Linas,
On 08/06/2017 02:12 AM, Linas Vepstas wrote:
No. I think you're missing the point. Equivalence is normally between pairs of things, and that is very manageable. You can say a=b and say b=c and then later change your mind about b=c without affecting a=b at all. That is very different than saying {a,b,c} is an equivalence-set.
That is, the atomspace is optimized for relations between pairs of things, or maybe triples. quadruple-relations are very rare. By contrast, sets with hundreds or thousands or millions of members are not uncommon.
We are not the first to deal with this. So both SQL and no noSQL are are both very explicitly be a "relational algebras", and are very explicitly not "set theories". In SQL, the table forms a "set", and it is very easy to add/remove rows in that set. A single row is a relation. The table of employees has one row per employee. It does NOT have all of the employees jammed into one big giant arbitrary-length row.
(Equivalence (stv 1 1) A (Or B C))
(And (stv 0 1) B C)
Both AndLink and OrLink are set-like in their behavior, and this is a problem. They are not relational, as currently defined.
Regarding set-like-behavior of And and Or, I suppose doing
(And A (And B C))
instead of
(And A B C)
wouldn't fix it, right?
I do sorta feel what you mean about keeping relationships small, but I don't concretely understand why its a problem (letting aside that the backing store cannot store more than 330 outgoins).
I agree about not creating new links up the wazzoo, it must be
carefully thought. However, you don't necessarily need to upgrade
PLN to reason on new links, if you can express the semantics of a
new link as a combination of old links, all you need is to write a
higher order fact such as
EquivalenceScope (stv 1 1)
$A $B $C
Partition $A (Set $B $C)
And
Equivalence $A (Or $B $C)
And $B $C
to enable PLN to reason about it.
I don't want to argue about it here, but I think that turning everything explicitly into a scope link is a minor mistake. I think it's just fine to have scoping be implicit. We don't need to invent a brand new BlahScopeLink for each and every BlahLink. Just pretend that BlahLink is a BlahScopeLink with zero variables. That's all. Don't special-case zero variables as being different from more-than-zero variables.
EquivalenceScope (stv 1 1)
<vardecl>
P
Q
is merely sugar syntax for
Equivalence (stv 1 1)
Lambda <vardecl> P
Lambda <vardecl> Q
This sugar syntax is mostly useful for humans, because <vardecl> is not duplicated in the AtomSpace anyway.
Nil
<mailto:opencog%2Bunsu...@googlegroups.com
<mailto:opencog%252Bunsubscribe...@googlegroups.com>>.
> To post to this group, send email to
ope...@googlegroups.com <mailto:opencog@googlegroups.com>
<mailto:opencog@googlegroups.com <mailto:opencog@googlegroups.com>>.
<mailto:opencog%2Bunsu...@googlegroups.comsend an email to opencog+unsubscribe@googlegroups.com
<mailto:opencog%2Bunsubscribe@googlegroups.com>
<mailto:opencog%252Bunsubscribe...@googlegroups.com>>.
To post to this group, send email to
ope...@googlegroups.com <mailto:opencog@googlegroups.com>
<mailto:opencog@googlegroups.com
<mailto:opencog@googlegroups.com>>.
Visit this group at https://groups.google.com/group/opencog
<https://groups.google.com/group/opencog>
<https://groups.google.com/group/opencog
<https://groups.google.com/group/opencog>>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/opencog/CACYTDBdm6M1y18G%3DQi%3D_rjJcdrEb5eAmx8ntxffKoRw_dG1OYw%40mail.gmail.com
<https://groups.google.com/d/msgid/opencog/CACYTDBdm6M1y18G%3DQi%3D_rjJcdrEb5eAmx8ntxffKoRw_dG1OYw%40mail.gmail.com>
<https://groups.google.com/d/msgid/opencog/CACYTDBdm6M1y18G%3DQi%3D_rjJcdrEb5eAmx8ntxffKoRw_dG1OYw%40mail.gmail.com
<https://groups.google.com/d/msgid/opencog/CACYTDBdm6M1y18G%3DQi%3D_rjJcdrEb5eAmx8ntxffKoRw_dG1OYw%40mail.gmail.com>>.
For more options, visit https://groups.google.com/d/optout
<https://groups.google.com/d/optout>
<https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>.
-- You received this message because you are subscribed to the
Google Groups "opencog" group.
To unsubscribe from this group and stop receiving emails from
it, send an email to opencog+unsubscribe@googlegroups.com
<mailto:opencog%2Bunsubscribe@googlegroups.com>
<mailto:opencog+unsubscribe@googlegroups.com
<mailto:opencog%2Bunsubscribe@googlegroups.com>>.
To post to this group, send email to ope...@googlegroups.com
<mailto:opencog@googlegroups.com>
<mailto:opencog@googlegroups.com <mailto:opencog@googlegroups.com>>.
SetLink ConceptNode "x" ConceptNode "y" ConceptNode "z"
EquivalenceLink ConceptNode "last three letters of the alphabet" SetLink ConceptNode "x" ConceptNode "y" ConceptNode "z"
MemberLink ConceptNode "x" ConceptNode "last three letters of the alphabet" MemberLink ConceptNode "y" ConceptNode "last three letters of the alphabet" MemberLink ConceptNode "z" ConceptNode "last three letters of the alphabet"
Again, with TV's:
MemberLink <1.0> ConceptNode "z" ConceptNode "last letters of the alphabet" MemberLink <0.9> ConceptNode "w" ConceptNode "last letters of the alphabet" MemberLink <0.8> ConceptNode "s" ConceptNode "last letters of the alphabet" MemberLink <0.2> ConceptNode "m" ConceptNode "last letters of the alphabet"
> email to opencog+unsubscribe@googlegroups.com.
> To post to this group, send email to ope...@googlegroups.com.
> Visit this group at https://groups.google.com/group/opencog.
> To view this discussion on the web visit
>> > email to opencog+unsubscribe@googlegroups.com.
>> > email to opencog+unsubscribe@googlegroups.com.
>> > email to opencog+u...@googlegroups.com.
However I don't think the more "atomic" representation should replace the more "holistic" one, both should be allowed in parallel, right? Would that be for backward compatibility at least. Then if it becomes obvious that the atomic form is superior we can deprecate the holistic form.
EquivalenceScope (stv 1 1)
<vardecl>
P
Q
is merely sugar syntax for
Equivalence (stv 1 1)
Lambda <vardecl> P
Lambda <vardecl> Q
This sugar syntax is mostly useful for humans, because <vardecl> is
not duplicated in the AtomSpace anyway.
Well, but that's not true! (Scope X P(X)==Q(X)) is not the same as (Scope X P(X)) == (Scope X Q(X)) because the latter can be alpha-rewritten as (Scope X P(X)) == (Scope Y Q(Y)) which is something completely different!
Agreed, they're not the same in the logic that you describe, but in PLN they are, because the former
(Scope X P(X)==Q(X))
is just *syntactic sugar* for the latter,
(Scope X P(X)) == (Scope X Q(X))
which is what really matters in a probabilistic interpretation.
<mailto:linasvepstas@gmail.com
> email to opencog+unsubscribe@googlegroups.com
<mailto:opencog%2Bunsubscribe@googlegroups.com>
<mailto:opencog%2Bunsu...@googlegroups.com
<mailto:opencog%252Bunsubscribe...@googlegroups.com>>
> To post to this group, send email to
ope...@googlegroups.com <mailto:opencog@googlegroups.com>
<mailto:opencog@googlegroups.com <mailto:opencog@googlegroups.com>>
<mailto:opencog@googlegroups.com
<mailto:opencog@googlegroups.com>
<mailto:opencog@googlegroups.com
<mailto:opencog@googlegroups.com>>>.
To post to this group, send email to
ope...@googlegroups.com <mailto:opencog@googlegroups.com>
<mailto:opencog@googlegroups.com <mailto:opencog@googlegroups.com>>
<mailto:opencog@googlegroups.com
<mailto:opencog@googlegroups.com>
<mailto:opencog@googlegroups.com
<mailto:opencog@googlegroups.com>>>.
<mailto:opencog%2Bunsu...@googlegroups.com
<mailto:opencog%252Bunsubscribe...@googlegroups.com>>
<mailto:opencog+unsubscribe@googlegroups.com
<mailto:opencog%2Bunsubscribe@googlegroups.com>
<mailto:opencog%2Bunsu...@googlegroups.com
<mailto:opencog%252Bunsubscribe...@googlegroups.com>>>.
To post to this group, send email to
ope...@googlegroups.com <mailto:opencog@googlegroups.com>
<mailto:opencog@googlegroups.com
<mailto:opencog@googlegroups.com>>
<mailto:opencog@googlegroups.com
<mailto:opencog@googlegroups.com>
<mailto:opencog@googlegroups.com
<mailto:opencog@googlegroups.com>>>.
Visit this group at
https://groups.google.com/group/opencog
<https://groups.google.com/group/opencog>
<https://groups.google.com/group/opencog
<https://groups.google.com/group/opencog>>.
To view this discussion on the web visit
DefinedPredicateNode "GO pathway term name"
AndLink
Predicate "protein relationship 1"
ProteinNode "x"
ProteinNode "y"
Predicate "protein relationship 2"
ProteinNode "y"
ProteinNode "z"
....
ProteinNode "x"
ProteinNode "y"
Predicate "protein relationship 2"
ProteinNode "y"
ProteinNode "z"
....
thanks for the feedback, linus! i copied the form using DefineLink and AndLink from the wiki
because it was the closest example i could find to what i was trying to do. i'm happy to implement pathways using your formalism.
one thing i don't understand from your explanation is that you first say the PredicateNode can be used instead of DefinedPredicateNode but then use both in your proposed implementation. can you elaborate further on why your proposal is optimal?
also, what are the options for scheme functions to invoke all the members of one of the resulting DefinedPredicateNodes?
Hi Mike,On Wed, Aug 16, 2017 at 7:29 PM, Michael Duncan <mjsd...@gmail.com> wrote:thanks for the feedback, linus! i copied the form using DefineLink and AndLink from the wiki
Do you know where in the wiki it says this?
because it was the closest example i could find to what i was trying to do. i'm happy to implement pathways using your formalism.
The following uses DefineLink to define a DefinedPredicateNode
DefineLink DefinedPredicateNode "MyPredicate" AndLink
...
i wanted a predicate defined over an arbitrarily long list of links between proteinNodes to represent a pathway that is probabilistically true based the truth value of the links "anded" together.
For plain-old knowledge representation, you probably should be using EquivalenceLink, instead of DefineLink. DfineLink is imperative, while EquivalenceLink is declarative.
So, for example: when you say "A is the same as B" that is a declaration that A is equivalent to B. This is an EquivalenceLink.
When you say "A is the name of B", and then later say "do something with A" that is an imperative command to actually do something with B. That is, replace A by B immediately, and do something with B. This an imperative command, This is the DefineLink. its a definition, kind-of-like in a dictionary.Thus, both DefineLink and EquivalenceLink are a certain kind of equality; but DefineLink is was invented to make it easier for humans to write code in atomese, while EquivalenceLink was designed to be used by PLN and other reasoning subsystems. EquivelanceLink declares knowledge. Since you are not hand-crafting code in atomese, there is really no valid reason for you to use DefineLink.
one thing i don't understand from your explanation is that you first say the PredicateNode can be used instead of DefinedPredicateNode but then use both in your proposed implementation. can you elaborate further on why your proposal is optimal?DefinedPredicateNode is simply a hack to make it easier for the pattern matcher to look up the definition. Since you are not writing pattern-matcher rules, there's no reason for you to use it.
also, what are the options for scheme functions to invoke all the members of one of the resulting DefinedPredicateNodes?I don't understand the question. First, one cannot "invoke" an atom. Second, neither PredicateNodes nor DefinedPredicateNodes have "members". Finally, you should try to avoid or minimize the writing or creation of "scheme functions"; you should design your data so that either PLN, or the pattern matcher, or the pattern miner, or the rule engine can work with it directly. Writing new code by hand, whether in C++, scheme or python, is best done to create generic data processing subsystems, instead of hand-tailloring something for your particular dataset. There are exceptions to this rule, but these should be avoided.
ProteinNode "x"
ProteinNode "y"
Predicate "protein relationship 2"
ProteinNode "y"
ProteinNode "z"
....
To unsubscribe from this group and stop receiving emails from it, send an email to opencog+unsubscribe@googlegroups.com.
To post to this group, send email to ope...@googlegroups.com.
Visit this group at https://groups.google.com/group/opencog.
To view this discussion on the web visit https://groups.google.com/d/msgid/opencog/b413685a-5d9a-45f4-879f-5647e67d3f5e%40googlegroups.com.