Hi,
I put together a little implementation for traversals. It is inspired by an original implementation from Mariano. Using DeepTraverser, you can traverse arbitrary graphs by describing the traversal and by specifying the actions you want to perform on the nodes and relations.
The code is available in the Moose image as part of the MooseAlgos subproject, but can also be loaded separately in a Pharo image via:
Gofer new url: 'http://www.smalltalkhub.com/mc/Moose/DeepTraverser/main'; package: ‘ConfigurationOfDeepTraverser’; load. (Smalltalk globals at: #ConfigurationOfDeepTraverser) loadDevelopment.
Just to give you an idea, here are some representative examples:
Number deep: #subclasses do: [:each | Transcript show: each; cr].
Number deepCollect: #subclasses.
Number deep: #subclasses collect: #name.
Number deep: #subclasses do: [:each | Transcript show: each; cr] relationDo: [ :from :to | Transcript show: from; show: ' <-- '; show: to; cr ].
More details about the usages and a little description of the implementation can be found here: http://www.humane-assessment.com/blog/traversal-enabled-pharo-objects/
Cheers, Doru
Hi Doru, I've been observing how the graph support in Moose has been developing. We in IBM Research have implemented a full Pharo implementation of the TinkerPop Blueprints property graph de-facto standard http://www.tinkerpop.com . I am also completing a Pharo-binding for the Gremlin graph traversal language that I call Glider (What you get when you cross a Gremlin and a Mouse). Its very compact and a bit weird syntactically, but its very powerful. Smells kinda like APL for graphs. If the community is interested, we could go through the IBM Open Source clearance process in the new year and see if we can contribute. Regards, Sam
Sam S. Adams, CTO - Contextual Computing IBM Distinguished Engineer, IBM Research Mobile: 919-696-6064, email: ssadams@us.ibm.com Assistant: Linda R. Morrison. (720) 395-0460 Fax: (845) 491-4318, Tie: 676-0460, linda.r.morrison@us.ibm.com <<Hebrews 11:6, Proverbs 3:5-6, Romans 1:16-17, 1 Corinthians 1:10>>
From: Tudor Girba tudor@tudorgirba.com To: moose-dev moose-dev@iam.unibe.ch, Discusses Development of Pharo pharo-dev@lists.pharo.org Date: 12/11/2013 10:22 AM Subject: [Moose-dev] [ANN] traversal-enabled objects with DeepTraverser Sent by: moose-dev-bounces@iam.unibe.ch
Hi,
I put together a little implementation for traversals. It is inspired by an original implementation from Mariano. Using DeepTraverser, you can traverse arbitrary graphs by describing the traversal and by specifying the actions you want to perform on the nodes and relations.
The code is available in the Moose image as part of the MooseAlgos subproject, but can also be loaded separately in a Pharo image via:
Gofer new url: 'http://www.smalltalkhub.com/mc/Moose/DeepTraverser/main'; package: ‘ConfigurationOfDeepTraverser’; load. (Smalltalk globals at: #ConfigurationOfDeepTraverser) loadDevelopment.
Just to give you an idea, here are some representative examples:
Number deep: #subclasses do: [:each | Transcript show: each; cr].
Number deepCollect: #subclasses.
Number deep: #subclasses collect: #name.
Number deep: #subclasses do: [:each | Transcript show: each; cr] relationDo: [ :from :to | Transcript show: from; show: ' <-- '; show: to; cr ].
More details about the usages and a little description of the implementation can be found here: http://www.humane-assessment.com/blog/traversal-enabled-pharo-objects/
Cheers, Doru
-- www.tudorgirba.com
"Every thing has its own flow" _______________________________________________ Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
We in IBM Research have implemented a full Pharo implementation of the TinkerPop Blueprints property graph de-facto standard http://www.tinkerpop.com . I am also completing a Pharo-binding for the Gremlin graph traversal language that I call Glider (What you get when you cross a Gremlin and a Mouse). Its very compact and a bit weird syntactically, but its very powerful. Smells kinda like APL for graphs. If the community is interested, we could go through the IBM Open Source clearance process in the new year and see if we can contribute.
Hi, I've been toying with Linked Data concepts in Pharo, and a common API for handling graphs would probably make this stuff a little less confusing. It's easy to think "I will just use the smalltalk object graph", but I'm not so sure anymore if that's a good idea.
bye,
Lorenz
Hi,
This sounds really interesting. I would definitely like to see the implementation both for the property graph and for the traversal language. And to have it available as open source under a Pharo-friendly license (MIT preferably) :).
In particular, I am curious about the language.
My implementation does not have these ambitions. I merely wanted to reach objects using a simple traversal (btw, I only implemented a breadth-first strategy) expressed in blocks, but having a more declarative query language would be interesting indeed.
Could you give us more details?
Cheers, Doru
On Wed, Dec 11, 2013 at 4:54 PM, Sam Adams ssadams@us.ibm.com wrote:
Hi Doru, I've been observing how the graph support in Moose has been developing. We in IBM Research have implemented a full Pharo implementation of the TinkerPop Blueprints property graph de-facto standard http://www.tinkerpop.com . I am also completing a Pharo-binding for the Gremlin graph traversal language that I call Glider (What you get when you cross a Gremlin and a Mouse). Its very compact and a bit weird syntactically, but its very powerful. Smells kinda like APL for graphs. If the community is interested, we could go through the IBM Open Source clearance process in the new year and see if we can contribute. Regards, Sam
Sam S. Adams, CTO - Contextual Computinghttps://w3-connections.ibm.com/communities/service/html/communityview?communityUuid=29937c79-74c1-439c-b096-4988a115daaf IBM Distinguished Engineer, IBM Research Mobile: 919-696-6064, email: ssadams@us.ibm.com Assistant: Linda R. Morrison. (720) 395-0460 Fax: (845) 491-4318, Tie: 676-0460, linda.r.morrison@us.ibm.com <<Hebrews 11:6, Proverbs 3:5-6, Romans 1:16-17, 1 Corinthians 1:10>>
[image: Inactive hide details for Tudor Girba ---12/11/2013 10:22:50 AM---Hi, I put together a little implementation for traversals. It]Tudor Girba ---12/11/2013 10:22:50 AM---Hi, I put together a little implementation for traversals. It is inspired by an
From: Tudor Girba tudor@tudorgirba.com To: moose-dev moose-dev@iam.unibe.ch, Discusses Development of Pharo < pharo-dev@lists.pharo.org> Date: 12/11/2013 10:22 AM Subject: [Moose-dev] [ANN] traversal-enabled objects with DeepTraverser Sent by: moose-dev-bounces@iam.unibe.ch
Hi,
I put together a little implementation for traversals. It is inspired by an original implementation from Mariano. Using DeepTraverser, you can traverse arbitrary graphs by describing the traversal and by specifying the actions you want to perform on the nodes and relations.
The code is available in the Moose image as part of the MooseAlgos subproject, but can also be loaded separately in a Pharo image via:
Gofer new url: '*http://www.smalltalkhub.com/mc/Moose/DeepTraverser/main*http://www.smalltalkhub.com/mc/Moose/DeepTraverser/main '; package: ‘ConfigurationOfDeepTraverser’; load. (Smalltalk globals at: #ConfigurationOfDeepTraverser) loadDevelopment.
Just to give you an idea, here are some representative examples:
Number deep: #subclasses do: [:each | Transcript show: each; cr].
Number deepCollect: #subclasses.
Number deep: #subclasses collect: #name.
Number deep: #subclasses do: [:each | Transcript show: each; cr] relationDo: [ :from :to | Transcript show: from; show: ' <-- '; show: to; cr ].
More details about the usages and a little description of the implementation can be found here: *http://www.humane-assessment.com/blog/traversal-enabled-pharo-objects/*http://www.humane-assessment.com/blog/traversal-enabled-pharo-objects/
Cheers, Doru
-- *www.tudorgirba.com* http://www.tudorgirba.com/
"Every thing has its own flow" _______________________________________________ Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
On Wed, Dec 11, 2013 at 4:54 PM, Sam Adams ssadams@us.ibm.com wrote:
Hi Doru, I've been observing how the graph support in Moose has been developing. We in IBM Research have implemented a full Pharo implementation of the TinkerPop Blueprints property graph de-facto standard http://www.tinkerpop.com . I am also completing a Pharo-binding for the Gremlin graph traversal language that I call Glider (What you get when you cross a Gremlin and a Mouse). Its very compact and a bit weird syntactically, but its very powerful. Smells kinda like APL for graphs. If the community is interested, we could go through the IBM Open Source clearance process in the new year and see if we can contribute.
Hi Sam,
really impressive works ! Do you reimplement completely the blueprint stack on top of Pharo ? This is definitively interesting for people who want to do complex graphs analysis. I imagine some kind of interaction between your language and the ROASSAL visual engine ;-)
Feel free to open source this work if you have the opportunity. Than you. Regards,
Impressive!
Alexandre
On Dec 11, 2013, at 4:54 PM, Sam Adams ssadams@us.ibm.com wrote:
Hi Doru, I've been observing how the graph support in Moose has been developing. We in IBM Research have implemented a full Pharo implementation of the TinkerPop Blueprints property graph de-facto standard http://www.tinkerpop.com . I am also completing a Pharo-binding for the Gremlin graph traversal language that I call Glider (What you get when you cross a Gremlin and a Mouse). Its very compact and a bit weird syntactically, but its very powerful. Smells kinda like APL for graphs. If the community is interested, we could go through the IBM Open Source clearance process in the new year and see if we can contribute. Regards, Sam
Sam S. Adams, CTO - Contextual Computing IBM Distinguished Engineer, IBM Research Mobile: 919-696-6064, email: ssadams@us.ibm.com Assistant: Linda R. Morrison. (720) 395-0460 Fax: (845) 491-4318, Tie: 676-0460, linda.r.morrison@us.ibm.com <<Hebrews 11:6, Proverbs 3:5-6, Romans 1:16-17, 1 Corinthians 1:10>>
<graycol.gif>Tudor Girba ---12/11/2013 10:22:50 AM---Hi, I put together a little implementation for traversals. It is inspired by an
From: Tudor Girba tudor@tudorgirba.com To: moose-dev moose-dev@iam.unibe.ch, Discusses Development of Pharo pharo-dev@lists.pharo.org Date: 12/11/2013 10:22 AM Subject: [Moose-dev] [ANN] traversal-enabled objects with DeepTraverser Sent by: moose-dev-bounces@iam.unibe.ch
Hi,
I put together a little implementation for traversals. It is inspired by an original implementation from Mariano. Using DeepTraverser, you can traverse arbitrary graphs by describing the traversal and by specifying the actions you want to perform on the nodes and relations.
The code is available in the Moose image as part of the MooseAlgos subproject, but can also be loaded separately in a Pharo image via:
Gofer new url: 'http://www.smalltalkhub.com/mc/Moose/DeepTraverser/main'; package: ‘ConfigurationOfDeepTraverser’; load. (Smalltalk globals at: #ConfigurationOfDeepTraverser) loadDevelopment.
Just to give you an idea, here are some representative examples:
Number deep: #subclasses do: [:each | Transcript show: each; cr].
Number deepCollect: #subclasses.
Number deep: #subclasses collect: #name.
Number deep: #subclasses do: [:each | Transcript show: each; cr] relationDo: [ :from :to | Transcript show: from; show: ' <-- '; show: to; cr ].
More details about the usages and a little description of the implementation can be found here: http://www.humane-assessment.com/blog/traversal-enabled-pharo-objects/
Cheers, Doru
-- www.tudorgirba.com
"Every thing has its own flow"_______________________________________________ Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev