Hi Ivan,

On Thu, Sep 23, 2021 at 10:51 AM Ivan V. <[email protected]> wrote:
>
> Thank you, I'll take some time to think about it if you don't mind.

Heh. Too late!  Rather than nagging you or anyone else about this, I
thought about it a bit, and realized that I could hack up a basic
solution in a day. So I did.  If you grabe the very latest atomspace
and cogserver code, then you get a simple network API to the
atomspace, here. The README explains all:

https://github.com/opencog/atomspace/blob/master/opencog/persist/json/README.md

The JSON is delivered as a string, over the network. You still have to
do something with it.  If/when you want to create javascript, node.js,
emscripten, or whatever kind of interfaces to it, let me know. I just
now create a new, empty git repo at
https://github.com/opencog/atomspace-js

Anyone who is interested should just ask, I'll provide write access to
that repo.

--linas



>
> čet, 23. ruj 2021. u 17:34 Linas Vepstas <[email protected]> napisao je:
>>
>> On Thu, Sep 23, 2021 at 3:15 AM Ivan V. <[email protected]> wrote:
>> >
>> > Just a quick question while we're at it, if I may: what is the best way to 
>> > communicate between web browser and atomspace?
>>
>> Currently, none. The "atomspace explorer"  used an atomspace server
>> that was weird, slow, mis-designed, old and incomplete...
>>
>> Let me take you on a trip.
>>
>> What is really needed are some javascript bindings that talk to the
>> cogserver. It is very easy, trivial, even, to talk to the cogserver,
>> and get a reply. The hard part is to convert the results into whatever
>> javascript you want -- we do not have any existing layer for that.
>> Creating this layer would be an excellent project.
>>
>> Thus, for example:
>> -- use javascript to open a socket to 17001
>> -- send command over that socket; for example,
>>    `(cog-value (Concept "foo") (Predicate "some key"))`
>> -- read the result, for example
>>    `(FloatValue 1.000000 2.000000 3.00000)`
>> -- close the socket, or re-use it.
>>
>> Great! But how do you convert  `(FloatValue 1.000000 2.000000
>> 3.00000)` into what you want? (What do you want?)
>>
>> Now, before you get on that airplane, and start writing code to use
>> javascript to talk to the cogserver, consider this:
>>
>> If you wrote that code, you would have to cache the results locally,
>> in javascript.  That is, you would have to create a local, in-browser
>> copy of (Concept "foo") and (Predicate "some key")  and remember that
>> (FloatValue 1 2 3) is attached to it.  In other words, you would be
>> re-inventing the atomspace, locally, running inside the browser. Good
>> god, why?  We already have an atomspace, why reinvent a
>> browser-specific one? (Because this is what things like the
>> atomspace-explorer were doing.)
>>
>> The correct solution is this:  create javascript bindings for the
>> atomspace. That's it, end of story. Want to talk to some remote
>> AtomSpace? Just use the CogStorageNode!  That's it, you're done.
>>
>> I'll stop writing the email here .. because there is nothing more to
>> say! People who use web browsers need javascript. If we had javascript
>> binding to the atomspace, you would have it in your browser.
>>
>> If you want to create these bindings, I'l create a github repo under
>> the opencog project, give you full write permission, and you can do
>> whatever in there.  I'm sure many people could use them.
>>
>> --linas
>>
>> >
>> > čet, 23. ruj 2021. u 08:24 Linas Vepstas <[email protected]> napisao 
>> > je:
>> >>
>> >> On Thu, Sep 23, 2021 at 12:44 AM Ivan V. <[email protected]> wrote:
>> >> >
>> >> > As for the visualization tool, I'll have more time in a few weeks when 
>> >> > I settle some of my obligations.
>> >>
>> >> You don't have to make promises!  There is no intent to guilt-trip you
>> >> into doing something.
>> >>
>> >> > Then, a kind of OpenCog debugger (or IDE) is what I have on my mind.
>> >>
>> >> In the end, whatever you create has to be for yourself, for your own
>> >> entertainment. If it turns out to be useful for others, that would be
>> >> wonderful, but, as this long conversation has shown, there's no
>> >> general vision of what anyone wants. Different people want different
>> >> things; what's useful for one is useless for another.
>> >>
>> >> > It would be something like an atomspace editor communicating to 
>> >> > cogserver, showing inference trees related to edited fragments. Nothing 
>> >> > too fancy, no dozens of options, just a simple atomspace expressions 
>> >> > writing aid, as minimalistic as it can get, with an editor on the left 
>> >> > and related inference trees on the right side.
>> >>
>> >> Two part reply.  (1) inference trees are very specific to the PLN
>> >> backward chainer, and have almost nothing to do with the atomspace.
>> >> (other than that they are kept in the atomspace ... for a while ..
>> >> until they are deleted. Nil can supply those if that is what you
>> >> really want.)
>> >>
>> >> (2) Don't worry about the cogserver. Don't use the cogserver. Just
>> >> work with the atomspace directly. Why? (a) you don't need the
>> >> cogserver to get things done. (b) if you absolutely must have a
>> >> network connection to some remote AtomSpace, use the CogStorageNode
>> >> -- it will automatically open a network connection to a remote
>> >> AtomSpace, and it will automatically trade atoms with it, bringing
>> >> them over to your local AtomSpace. You just have to specify which
>> >> atoms. If you are not sure which atoms, you can easily run a query on
>> >> the remote AtomSpace.
>> >>
>> >> Documentation:
>> >> https://wiki.opencog.org/w/CogStorageNode
>> >>
>> >> Demos:
>> >> https://github.com/opencog/atomspace-cog/tree/master/examples
>> >>
>> >> -- linas
>> >>
>> >>
>> >> --
>> >> Patrick: Are they laughing at us?
>> >> Sponge Bob: No, Patrick, they are laughing next to us.
>> >>
>> >> --
>> >> 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 [email protected].
>> >> To view this discussion on the web visit 
>> >> https://groups.google.com/d/msgid/opencog/CAHrUA34zZ%2BqFdgycq8PQjp1BvikD0b1Y8HSRSebMMxCfeF5p8Q%40mail.gmail.com.
>> >
>> > --
>> > 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 [email protected].
>> > To view this discussion on the web visit 
>> > https://groups.google.com/d/msgid/opencog/CAB5%3Dj6UkUirdXC9h7fmgzHvaZzz46coGYTUAU2TdqigTEXX4xw%40mail.gmail.com.
>>
>>
>>
>> --
>> Patrick: Are they laughing at us?
>> Sponge Bob: No, Patrick, they are laughing next to us.
>>
>> --
>> 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 [email protected].
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/opencog/CAHrUA35-K8V6T3V%2BM7nLSze0NdPhcuk9txBNAoMAd1XJ%3DGekEw%40mail.gmail.com.
>
> --
> 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 [email protected].
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/opencog/CAB5%3Dj6Vn5b1NdXa1ptQEtEMXES%3D9H23Ry6J3_X4f%3DAraf%2BEybg%40mail.gmail.com.



-- 
Patrick: Are they laughing at us?
Sponge Bob: No, Patrick, they are laughing next to us.

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/opencog/CAHrUA36dV20DGvtE2hTP94q48-f5BrtBjRi3h%2Bv5U6hYhr3MsQ%40mail.gmail.com.

Reply via email to