neo-viz 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +9 -0
- data/.livereload +20 -0
- data/.rspec +2 -0
- data/.rvmrc +3 -0
- data/Gemfile +6 -0
- data/LICENSE +19 -0
- data/README.md +120 -0
- data/Rakefile +12 -0
- data/bin/neo-viz +12 -0
- data/config.ru +35 -0
- data/lib/neo-viz.rb +185 -0
- data/lib/neo-viz/version.rb +6 -0
- data/neo-viz.gemspec +37 -0
- data/public/coffeescripts/app_context.coffee +89 -0
- data/public/coffeescripts/canvas_util.coffee +68 -0
- data/public/coffeescripts/event_broker.coffee +16 -0
- data/public/coffeescripts/filters.coffee +113 -0
- data/public/coffeescripts/main.coffee.erb +132 -0
- data/public/coffeescripts/neo4j.coffee +90 -0
- data/public/coffeescripts/renderer.coffee +141 -0
- data/public/coffeescripts/space.coffee +81 -0
- data/public/images/ajax-loader.gif +0 -0
- data/public/javascripts/data.js +45 -0
- data/public/javascripts/data2.js +1287 -0
- data/public/javascripts/main.sprockets.js +9 -0
- data/public/lib/arbor/arbor-tween.js +86 -0
- data/public/lib/arbor/arbor.js +67 -0
- data/public/lib/jQuery/jquery-1.6.1.min.js +18 -0
- data/public/lib/jasmine-1.1.0/MIT.LICENSE +20 -0
- data/public/lib/jasmine-1.1.0/jasmine-html.js +190 -0
- data/public/lib/jasmine-1.1.0/jasmine.css +166 -0
- data/public/lib/jasmine-1.1.0/jasmine.js +2476 -0
- data/public/lib/jasmine-1.1.0/jasmine_favicon.png +0 -0
- data/public/lib/stdlib/stdlib.js +115 -0
- data/public/lib/sylvester-0.1.3/CHANGELOG.txt +29 -0
- data/public/lib/sylvester-0.1.3/sylvester.js +1 -0
- data/public/lib/sylvester-0.1.3/sylvester.js.gz +0 -0
- data/public/lib/sylvester-0.1.3/sylvester.src.js +1254 -0
- data/public/scss/main.scss +152 -0
- data/public/scss/mixins.scss +37 -0
- data/spec/coffeescripts/canvas_util_spec.coffee +4 -0
- data/spec/coffeescripts/filters_spec.coffee +37 -0
- data/spec/coffeescripts/neo4j_spec.coffee +76 -0
- data/spec/neo_viz_spec.rb +48 -0
- data/spec/spec_helper.rb +17 -0
- data/spec/support/struct_matcher.rb +117 -0
- data/views/_filters.haml +22 -0
- data/views/_partial.haml +39 -0
- data/views/embedded.haml +15 -0
- data/views/index.haml +19 -0
- data/views/jasmine_specs_runner.haml +50 -0
- metadata +236 -0
@@ -0,0 +1,90 @@
|
|
1
|
+
//= require stdlib.js
|
2
|
+
|
3
|
+
class Graph
|
4
|
+
|
5
|
+
constructor: (nodeDatas, relDatas) ->
|
6
|
+
@nodes = []
|
7
|
+
@nodeHash = {}
|
8
|
+
@relationships = []
|
9
|
+
|
10
|
+
for nodeData in nodeDatas
|
11
|
+
node = new Node(nodeData.id)
|
12
|
+
@nodeHash[node.id] = node
|
13
|
+
@nodes.push(node)
|
14
|
+
|
15
|
+
for relData in relDatas
|
16
|
+
start_node = @nodeHash[relData.start_node]
|
17
|
+
end_node = @nodeHash[relData.end_node]
|
18
|
+
rel = new Relationship(relData.id, relData.data.rel_type, start_node, end_node)
|
19
|
+
@relationships.push(rel)
|
20
|
+
start_node.addOutgoing(rel)
|
21
|
+
end_node.addIncoming(rel)
|
22
|
+
|
23
|
+
|
24
|
+
load: (nodeId) ->
|
25
|
+
for node in @nodes
|
26
|
+
return node if node.id == nodeId
|
27
|
+
|
28
|
+
throw "no such node in graph: " + nodeId if !node
|
29
|
+
|
30
|
+
areConnected: (nodeA, nodeB, activeRels=@relationships) ->
|
31
|
+
# Make sure we don't destroy the input:
|
32
|
+
mutableActiveRels = activeRels.slice(0)
|
33
|
+
|
34
|
+
@innerAreConnected(nodeA, nodeB, mutableActiveRels)
|
35
|
+
|
36
|
+
innerAreConnected: (nodeA, nodeB, activeRels) ->
|
37
|
+
# Algorithm:
|
38
|
+
# (nodeA == nodeB) OR (anyOf(nodeA.neighbors.connectedTo(nodeB).throughRelationshipsWeHaveNotAlreadyTraversed))
|
39
|
+
# (we have to discard relationships already traversed so we don't go in circles)
|
40
|
+
if nodeA == nodeB
|
41
|
+
true
|
42
|
+
else
|
43
|
+
connected = false
|
44
|
+
for rel in nodeA.both()
|
45
|
+
if activeRels.contains(rel)
|
46
|
+
activeRels.remove(activeRels.indexOf(rel))
|
47
|
+
otherNode = rel.other(nodeA)
|
48
|
+
#console.log "nodeA: " + nodeA.id + ", rel: " + rel.id + ", otherNode: " + otherNode.id
|
49
|
+
connected = @innerAreConnected(otherNode, nodeB, activeRels)
|
50
|
+
break if connected
|
51
|
+
connected
|
52
|
+
|
53
|
+
class Node
|
54
|
+
|
55
|
+
constructor: (@id) ->
|
56
|
+
@ins = []
|
57
|
+
@outs = []
|
58
|
+
|
59
|
+
addIncoming: (relationShip) ->
|
60
|
+
@ins.push(relationShip)
|
61
|
+
|
62
|
+
addOutgoing: (relationShip) ->
|
63
|
+
@outs.push(relationShip)
|
64
|
+
|
65
|
+
incoming: (types) ->
|
66
|
+
return @ins.slice(0) if !types
|
67
|
+
|
68
|
+
(rel for rel in @ins when types.contains(rel.type))
|
69
|
+
|
70
|
+
outgoing: (types) ->
|
71
|
+
return @outs.slice(0) if !types
|
72
|
+
|
73
|
+
(rel for rel in @outs when types.contains(rel.type))
|
74
|
+
|
75
|
+
both: (types) ->
|
76
|
+
return @ins.concat(@outs) if !types
|
77
|
+
|
78
|
+
@incoming(types).concat(@outgoing(types))
|
79
|
+
|
80
|
+
class Relationship
|
81
|
+
|
82
|
+
constructor: (@id, @type, @start_node, @end_node) ->
|
83
|
+
|
84
|
+
other: (node) ->
|
85
|
+
return @start_node if @end_node == node
|
86
|
+
return @end_node
|
87
|
+
|
88
|
+
root = exports ? this
|
89
|
+
root.Graph = Graph
|
90
|
+
|
@@ -0,0 +1,141 @@
|
|
1
|
+
//= require "sylvester.js"
|
2
|
+
|
3
|
+
$ = jQuery
|
4
|
+
|
5
|
+
Renderer = (canvas, handler) ->
|
6
|
+
util = CanvasUtil
|
7
|
+
canvas = $(canvas).get(0)
|
8
|
+
ctx = canvas.getContext '2d'
|
9
|
+
particleSystem = null
|
10
|
+
objectHandler = handler
|
11
|
+
view = null
|
12
|
+
keyFilter = null
|
13
|
+
|
14
|
+
init: (system) ->
|
15
|
+
particleSystem = system
|
16
|
+
particleSystem.screenSize(canvas.width, canvas.height)
|
17
|
+
particleSystem.screenPadding(80)
|
18
|
+
@initMouseHandling()
|
19
|
+
view = @defaultView
|
20
|
+
|
21
|
+
defaultView: (data) ->
|
22
|
+
# If keyfilter is active then show all properties ("keys") passing the filter.
|
23
|
+
# Otherwise only show 3 props but indicate how many there really are.
|
24
|
+
text = []
|
25
|
+
usedKeys = {first: true}
|
26
|
+
if keyFilter?.length > 0
|
27
|
+
for regex in keyFilter
|
28
|
+
for key, value of data
|
29
|
+
if key.match(regex)
|
30
|
+
text.push "#{value} (#{key})" unless usedKeys[key]
|
31
|
+
usedKeys[key] = true
|
32
|
+
else
|
33
|
+
for key, value of data
|
34
|
+
text.push "#{value} (#{key})" unless key is 'first'
|
35
|
+
|
36
|
+
nbrProps = text.length - 1 # -1 since we don't count _neo_id
|
37
|
+
nbrPropsToShow = 3
|
38
|
+
addEllipsis = nbrProps - nbrPropsToShow > 0
|
39
|
+
text = text[0..nbrPropsToShow]
|
40
|
+
text.push "(#{nbrProps-nbrPropsToShow} more)" if addEllipsis
|
41
|
+
|
42
|
+
line[0..40] for line in text
|
43
|
+
|
44
|
+
setKeyFilter: (keyFilterString) ->
|
45
|
+
if keyFilterString?.trim() is ''
|
46
|
+
keyFilter = null
|
47
|
+
else
|
48
|
+
string = "_neo_id, #{keyFilterString}"
|
49
|
+
keyFilter = (new RegExp(key.trim()) for key in string.split(','))
|
50
|
+
|
51
|
+
redraw: ->
|
52
|
+
ctx.fillStyle = 'white'
|
53
|
+
ctx.fillRect 0, 0, canvas.width, canvas.height
|
54
|
+
|
55
|
+
particleSystem.eachEdge (edge, fromPoint, toPoint) =>
|
56
|
+
@drawEdge(edge, fromPoint, toPoint)
|
57
|
+
|
58
|
+
particleSystem.eachNode (node, point) =>
|
59
|
+
@drawNode(node, point)
|
60
|
+
|
61
|
+
|
62
|
+
drawNode: (node, point) ->
|
63
|
+
MARGIN = 10
|
64
|
+
nodeView = view node.data
|
65
|
+
ctx.font = "10pt Times"
|
66
|
+
{width, height, count} = util.textSize ctx, nodeView
|
67
|
+
maxWidth = 230
|
68
|
+
maxHeight = 100
|
69
|
+
width = Math.min(width, maxWidth)
|
70
|
+
height = Math.min(height, maxHeight)
|
71
|
+
|
72
|
+
color = if node.data.first then "blue" else "green"
|
73
|
+
util.roundRect(ctx, point, width+(MARGIN*2), height, color, 10)
|
74
|
+
|
75
|
+
ctx.fillStyle ='white'
|
76
|
+
x = util.centerToEdge(point.x, width)
|
77
|
+
y = util.centerToEdge(point.y, height) + MARGIN*2
|
78
|
+
util.drawText(ctx, nodeView, x, y)
|
79
|
+
|
80
|
+
drawEdge: (edge, fromPoint, toPoint) ->
|
81
|
+
ctx.strokeStyle = 'rgba(0,0,0, .333)'
|
82
|
+
util.line ctx, fromPoint, toPoint
|
83
|
+
|
84
|
+
x = (fromPoint.x + toPoint.x) / 2 - 30
|
85
|
+
y = (fromPoint.y + toPoint.y) / 2
|
86
|
+
ctx.font = "10pt Times"
|
87
|
+
ctx.fillStyle ='red'
|
88
|
+
util.drawText(ctx, [edge.data.rel_type], x, y)
|
89
|
+
|
90
|
+
middle: (p1, p2) ->
|
91
|
+
if p1 > p2
|
92
|
+
(p1 - p2) / 2 + p2
|
93
|
+
else
|
94
|
+
(p2 - p1) / 2 + p1
|
95
|
+
|
96
|
+
|
97
|
+
edgeHitTest: (point, p1, p2, thresholdInPixels) ->
|
98
|
+
delta = thresholdInPixels
|
99
|
+
mx = @middle(p1.x, p2.x)
|
100
|
+
my = @middle(p1.y, p2.y)
|
101
|
+
return false if point.x < mx - delta
|
102
|
+
return false if point.x > mx + delta
|
103
|
+
return false if point.y < my - delta
|
104
|
+
return false if point.y > my + delta
|
105
|
+
true
|
106
|
+
|
107
|
+
initMouseHandling: ->
|
108
|
+
|
109
|
+
handler =
|
110
|
+
|
111
|
+
dblclick: (e) ->
|
112
|
+
pos = $(canvas).offset()
|
113
|
+
_mouseP = arbor.Point(e.pageX-pos.left, e.pageY-pos.top)
|
114
|
+
object = particleSystem.nearest(_mouseP)
|
115
|
+
objectHandler.activated object.node.name
|
116
|
+
false
|
117
|
+
|
118
|
+
click: (e) =>
|
119
|
+
pos = $(canvas).offset()
|
120
|
+
_mouseP = arbor.Point(e.pageX-pos.left, e.pageY-pos.top)
|
121
|
+
|
122
|
+
hitEdge = false
|
123
|
+
particleSystem.eachEdge (edge, fromPoint, toPoint) =>
|
124
|
+
if (@edgeHitTest(_mouseP, fromPoint, toPoint, 14))
|
125
|
+
objectHandler.selectedEdge edge.data._neo_id
|
126
|
+
hitEdge = true
|
127
|
+
return false
|
128
|
+
|
129
|
+
if !hitEdge
|
130
|
+
object = particleSystem.nearest(_mouseP)
|
131
|
+
objectHandler.selectedNode(object.node.name)
|
132
|
+
false
|
133
|
+
|
134
|
+
$(canvas)
|
135
|
+
.dblclick(handler.dblclick)
|
136
|
+
.click(handler.click)
|
137
|
+
|
138
|
+
|
139
|
+
root = exports ? this
|
140
|
+
root.Renderer = Renderer
|
141
|
+
|
@@ -0,0 +1,81 @@
|
|
1
|
+
class Space
|
2
|
+
constructor: (@sys, @nodeCount) ->
|
3
|
+
@nodes = {}
|
4
|
+
@rels = {}
|
5
|
+
@allNodes = []
|
6
|
+
@allRels = []
|
7
|
+
@hiddenNodeIds = []
|
8
|
+
@hiddenRelIds = []
|
9
|
+
|
10
|
+
addData: (data) ->
|
11
|
+
@allNodes = data.nodes
|
12
|
+
@allRels = data.rels
|
13
|
+
@refresh()
|
14
|
+
|
15
|
+
setHiddenData: (data) ->
|
16
|
+
@hiddenNodeIds = data.nodeIds
|
17
|
+
@hiddenRelIds = data.relIds
|
18
|
+
@refresh()
|
19
|
+
|
20
|
+
refresh: ->
|
21
|
+
@clear()
|
22
|
+
@addNodes @allNodes
|
23
|
+
@addRels @allRels
|
24
|
+
|
25
|
+
clear: ->
|
26
|
+
for key, node of @nodes
|
27
|
+
@sys.pruneNode(key)
|
28
|
+
@nodes = {}
|
29
|
+
@rels = {}
|
30
|
+
|
31
|
+
getSelectedNode: ->
|
32
|
+
@selectedNode
|
33
|
+
|
34
|
+
setFilter: (filter) ->
|
35
|
+
@filter = if filter then new RegExp(filter, 'i') else null
|
36
|
+
|
37
|
+
setNodeCount: (n) ->
|
38
|
+
@nodeCount = n
|
39
|
+
|
40
|
+
addNodes: (nodes) ->
|
41
|
+
return if nodes.length == 0
|
42
|
+
|
43
|
+
inspect = (node) ->
|
44
|
+
name = (for key, value of node.data
|
45
|
+
"#{key}:#{value}").join(' ')
|
46
|
+
name
|
47
|
+
|
48
|
+
@selectedNode = nodes[0]
|
49
|
+
@selectedNode.data.first = true
|
50
|
+
|
51
|
+
filteredNodes = nodes.slice(0)
|
52
|
+
filteredNodes = (node for node in filteredNodes when !@hiddenNodeIds.contains(node.id))
|
53
|
+
filteredNodes = (node for node in filteredNodes when inspect(node).match(@filter)) if @filter
|
54
|
+
|
55
|
+
return if filteredNodes.length is 0
|
56
|
+
return if filteredNodes[0] is @selectedNode and filteredNodes.length is 1
|
57
|
+
|
58
|
+
filteredNodes.unshift(@selectedNode)
|
59
|
+
|
60
|
+
filteredNodes = filteredNodes[0...@nodeCount] if filteredNodes.length > @nodeCount
|
61
|
+
|
62
|
+
for node in filteredNodes
|
63
|
+
@sys.addNode(node.id, node.data) unless @nodes[node.id]
|
64
|
+
@nodes[node.id] = node
|
65
|
+
|
66
|
+
addRels: (rels) ->
|
67
|
+
|
68
|
+
filteredRels = (rel for rel in rels when !@hiddenRelIds.contains(rel.data._neo_id))
|
69
|
+
for rel in filteredRels
|
70
|
+
if @nodes[rel.start_node] and @nodes[rel.end_node]
|
71
|
+
@sys.addEdge(rel.start_node, rel.end_node, rel.data)
|
72
|
+
@rels[rel.id] = rel
|
73
|
+
|
74
|
+
node: (id) ->
|
75
|
+
@nodes[id]
|
76
|
+
|
77
|
+
rel: (id) ->
|
78
|
+
@rels[id]
|
79
|
+
|
80
|
+
root = exports ? this
|
81
|
+
root.Space = Space
|
Binary file
|
@@ -0,0 +1,45 @@
|
|
1
|
+
data = {
|
2
|
+
"nodes": [
|
3
|
+
{"data": { "_neo_id":0, "gemFile": "source :rubygems\ngem"}, "id":0 },
|
4
|
+
{"data":{"_count__all__classname":53, "_neo_id":5}, "id":5},
|
5
|
+
{"data":{"_count__all__classname":148, "_neo_id":1}, "id":1},
|
6
|
+
{"data":{"_count__all__classname":10, "_neo_id":2}, "id":2},
|
7
|
+
{"data":{"_count__all__classname":1, "_neo_id":6}, "id":6},
|
8
|
+
{"data":{"_count__all__classname":65, "_neo_id":4}, "id":4},
|
9
|
+
{"data":{"_count__all__classname":19, "_neo_id":3}, "id":3}
|
10
|
+
],
|
11
|
+
"rels": [
|
12
|
+
{
|
13
|
+
"data":{"_neo_id":4, "rel_type":"BirdiesBackend::User"},
|
14
|
+
"end_node":5,
|
15
|
+
"id":4,
|
16
|
+
"start_node":0},
|
17
|
+
{
|
18
|
+
"data":{"_neo_id":0, "rel_type":"Neo4j::Rails::Model"},
|
19
|
+
"end_node":1,
|
20
|
+
"id":0,
|
21
|
+
"start_node":0},
|
22
|
+
{
|
23
|
+
"data":{"_neo_id":1, "rel_type":"BirdiesBackend::Link"},
|
24
|
+
"end_node":2,
|
25
|
+
"id":1,
|
26
|
+
"start_node":0},
|
27
|
+
{
|
28
|
+
"data":{"_neo_id":5, "rel_type":"BirdiesBackend::Tweeters"},
|
29
|
+
"end_node":6,
|
30
|
+
"id":5,
|
31
|
+
"start_node":0},
|
32
|
+
{
|
33
|
+
"data":{"_neo_id":3, "rel_type":"BirdiesBackend::Tweet"},
|
34
|
+
"end_node":4,
|
35
|
+
"id":3,
|
36
|
+
"start_node":0},
|
37
|
+
{
|
38
|
+
"data":{"_neo_id":2, "rel_type":"BirdiesBackend::Tag"},
|
39
|
+
"end_node":3,
|
40
|
+
"id":2,
|
41
|
+
"start_node":0}
|
42
|
+
]
|
43
|
+
}
|
44
|
+
|
45
|
+
|
@@ -0,0 +1,1287 @@
|
|
1
|
+
data = {
|
2
|
+
"_count__all__classname":148,
|
3
|
+
"_neo_id":1,
|
4
|
+
"rels":
|
5
|
+
[{"_neo_id":936,
|
6
|
+
"direction":"outgoing",
|
7
|
+
"other_node":
|
8
|
+
{"_classname":"BirdiesBackend::Tweet",
|
9
|
+
"_neo_id":151,
|
10
|
+
"date":1306356540,
|
11
|
+
"link":"http://twitter.com/neo4j/statuses/73490775761096704",
|
12
|
+
"short":"How graph databases can make yo",
|
13
|
+
"text":
|
14
|
+
"How graph databases can make you a superstar, by @andres_taylor http://slidesha.re/kjKsMC #graphdb #nosql #JEE #neo4j",
|
15
|
+
"tweet_id":"73490775761096704"},
|
16
|
+
"rel_type":"_all"},
|
17
|
+
{"_neo_id":934,
|
18
|
+
"direction":"outgoing",
|
19
|
+
"other_node":
|
20
|
+
{"_classname":"BirdiesBackend::Link",
|
21
|
+
"_neo_id":150,
|
22
|
+
"url":"http://t.co/4tN3n1B"},
|
23
|
+
"rel_type":"_all"},
|
24
|
+
{"_neo_id":932,
|
25
|
+
"direction":"outgoing",
|
26
|
+
"other_node":
|
27
|
+
{"_classname":"BirdiesBackend::User", "_neo_id":149, "twid":"rgaidot"},
|
28
|
+
"rel_type":"_all"},
|
29
|
+
{"_neo_id":930,
|
30
|
+
"direction":"outgoing",
|
31
|
+
"other_node":
|
32
|
+
{"_classname":"BirdiesBackend::Tweet",
|
33
|
+
"_neo_id":148,
|
34
|
+
"date":1306356590,
|
35
|
+
"link":"http://twitter.com/rgaidot/statuses/73490981563019265",
|
36
|
+
"short":"check out "Graph database ",
|
37
|
+
"text":
|
38
|
+
"check out "Graph database super star" http://t.co/4tN3n1B #graphdb #neo4j",
|
39
|
+
"tweet_id":"73490981563019265"},
|
40
|
+
"rel_type":"_all"},
|
41
|
+
{"_neo_id":928,
|
42
|
+
"direction":"outgoing",
|
43
|
+
"other_node":
|
44
|
+
{"_classname":"BirdiesBackend::Tweet",
|
45
|
+
"_neo_id":147,
|
46
|
+
"date":1306356714,
|
47
|
+
"link":"http://twitter.com/peterneubauer/statuses/73491502805950464",
|
48
|
+
"short":"RT : How graph databases can ma",
|
49
|
+
"text":
|
50
|
+
"RT @neo4j: How graph databases can make you a superstar, by @andres_taylor http://slidesha.re/kjKsMC #graphdb #nosql #JEE #neo4j",
|
51
|
+
"tweet_id":"73491502805950464"},
|
52
|
+
"rel_type":"_all"},
|
53
|
+
{"_neo_id":926,
|
54
|
+
"direction":"outgoing",
|
55
|
+
"other_node":
|
56
|
+
{"_classname":"BirdiesBackend::User", "_neo_id":146, "twid":"shamod"},
|
57
|
+
"rel_type":"_all"},
|
58
|
+
{"_neo_id":924,
|
59
|
+
"direction":"outgoing",
|
60
|
+
"other_node":
|
61
|
+
{"_classname":"BirdiesBackend::Tweet",
|
62
|
+
"_neo_id":145,
|
63
|
+
"date":1306358635,
|
64
|
+
"link":"http://twitter.com/shamod/statuses/73499559078273025",
|
65
|
+
"short":"RT How graph databases can mak",
|
66
|
+
"text":
|
67
|
+
"RT @neo4j How graph databases can make you a superstar, by @andres_taylor http://slidesha.re/kjKsMC #graphdb #nosql #JEE #neo4j",
|
68
|
+
"tweet_id":"73499559078273025"},
|
69
|
+
"rel_type":"_all"},
|
70
|
+
{"_neo_id":922,
|
71
|
+
"direction":"outgoing",
|
72
|
+
"other_node":
|
73
|
+
{"_classname":"BirdiesBackend::User", "_neo_id":154, "twid":"jruby"},
|
74
|
+
"rel_type":"_all"},
|
75
|
+
{"_neo_id":920,
|
76
|
+
"direction":"outgoing",
|
77
|
+
"other_node":
|
78
|
+
{"_classname":"BirdiesBackend::User",
|
79
|
+
"_neo_id":153,
|
80
|
+
"twid":"hannelita"},
|
81
|
+
"rel_type":"_all"},
|
82
|
+
{"_neo_id":918,
|
83
|
+
"direction":"outgoing",
|
84
|
+
"other_node":
|
85
|
+
{"_classname":"BirdiesBackend::Tweet",
|
86
|
+
"_neo_id":152,
|
87
|
+
"date":1306354151,
|
88
|
+
"link":"http://twitter.com/hannelita/statuses/73480752578314240",
|
89
|
+
"short":"Wow!!! with => YES, it wor",
|
90
|
+
"text":
|
91
|
+
"Wow!!! @jruby with #Neo4J => YES, it works! pretty pretty fine!!!! :D",
|
92
|
+
"tweet_id":"73480752578314240"},
|
93
|
+
"rel_type":"_all"},
|
94
|
+
{"_neo_id":868,
|
95
|
+
"direction":"outgoing",
|
96
|
+
"other_node":
|
97
|
+
{"_classname":"BirdiesBackend::Tweet",
|
98
|
+
"_neo_id":120,
|
99
|
+
"date":1306384455,
|
100
|
+
"link":"http://twitter.com/fakod/statuses/73607858075348992",
|
101
|
+
"short":"that will be interesting \342\200\234: ",
|
102
|
+
"text":
|
103
|
+
"that will be interesting http://t.co/y7HgQyN \342\200\234#neo4j: Check out the @TransportDublin http://t.co/uqUgj5W #nosql #graphdb #gis #OSM\342\200\235",
|
104
|
+
"tweet_id":"73607858075348992"},
|
105
|
+
"rel_type":"_all"},
|
106
|
+
{"_neo_id":866,
|
107
|
+
"direction":"outgoing",
|
108
|
+
"other_node":
|
109
|
+
{"_classname":"BirdiesBackend::User", "_neo_id":121, "twid":"fakod"},
|
110
|
+
"rel_type":"_all"},
|
111
|
+
{"_neo_id":864,
|
112
|
+
"direction":"outgoing",
|
113
|
+
"other_node":
|
114
|
+
{"_classname":"BirdiesBackend::Link",
|
115
|
+
"_neo_id":122,
|
116
|
+
"url":"http://t.co/y7HgQyN"},
|
117
|
+
"rel_type":"_all"},
|
118
|
+
{"_neo_id":862,
|
119
|
+
"direction":"outgoing",
|
120
|
+
"other_node":
|
121
|
+
{"_classname":"BirdiesBackend::Link",
|
122
|
+
"_neo_id":123,
|
123
|
+
"url":"http://t.co/uqUgj5W"},
|
124
|
+
"rel_type":"_all"},
|
125
|
+
{"_neo_id":860,
|
126
|
+
"direction":"outgoing",
|
127
|
+
"other_node":
|
128
|
+
{"_classname":"BirdiesBackend::Tweet",
|
129
|
+
"_neo_id":124,
|
130
|
+
"date":1306380714,
|
131
|
+
"link":"http://twitter.com/mcculls/statuses/73592165955149825",
|
132
|
+
"short":"RT : How graph databases can ma",
|
133
|
+
"text":
|
134
|
+
"RT @neo4j: How graph databases can make you a superstar, by @andres_taylor http://slidesha.re/kjKsMC #graphdb #nosql #JEE #neo4j",
|
135
|
+
"tweet_id":"73592165955149825"},
|
136
|
+
"rel_type":"_all"},
|
137
|
+
{"_neo_id":858,
|
138
|
+
"direction":"outgoing",
|
139
|
+
"other_node":
|
140
|
+
{"_classname":"BirdiesBackend::User", "_neo_id":125, "twid":"mcculls"},
|
141
|
+
"rel_type":"_all"},
|
142
|
+
{"_neo_id":856,
|
143
|
+
"direction":"outgoing",
|
144
|
+
"other_node":
|
145
|
+
{"_classname":"BirdiesBackend::Tweet",
|
146
|
+
"_neo_id":126,
|
147
|
+
"date":1306377974,
|
148
|
+
"link":"http://twitter.com/tatsuyalam/statuses/73580674052919296",
|
149
|
+
"short":"RT : How graph databases can ma",
|
150
|
+
"text":
|
151
|
+
"RT @neo4j: How graph databases can make you a superstar, by @andres_taylor http://slidesha.re/kjKsMC #graphdb #nosql #JEE #neo4j",
|
152
|
+
"tweet_id":"73580674052919296"},
|
153
|
+
"rel_type":"_all"},
|
154
|
+
{"_neo_id":854,
|
155
|
+
"direction":"outgoing",
|
156
|
+
"other_node":
|
157
|
+
{"_classname":"BirdiesBackend::User",
|
158
|
+
"_neo_id":127,
|
159
|
+
"twid":"tatsuyalam"},
|
160
|
+
"rel_type":"_all"},
|
161
|
+
{"_neo_id":852,
|
162
|
+
"direction":"outgoing",
|
163
|
+
"other_node":
|
164
|
+
{"_classname":"BirdiesBackend::User",
|
165
|
+
"_neo_id":112,
|
166
|
+
"twid":"alecorti28"},
|
167
|
+
"rel_type":"_all"},
|
168
|
+
{"_neo_id":850,
|
169
|
+
"direction":"outgoing",
|
170
|
+
"other_node":
|
171
|
+
{"_classname":"BirdiesBackend::User",
|
172
|
+
"_neo_id":113,
|
173
|
+
"twid":"transportdublin"},
|
174
|
+
"rel_type":"_all"},
|
175
|
+
{"_neo_id":848,
|
176
|
+
"direction":"outgoing",
|
177
|
+
"other_node":
|
178
|
+
{"_classname":"BirdiesBackend::Link",
|
179
|
+
"_neo_id":114,
|
180
|
+
"url":"http://www.TransportDublin.ie"},
|
181
|
+
"rel_type":"_all"},
|
182
|
+
{"_neo_id":846,
|
183
|
+
"direction":"outgoing",
|
184
|
+
"other_node":
|
185
|
+
{"_classname":"BirdiesBackend::Tag", "_neo_id":115, "name":"gis"},
|
186
|
+
"rel_type":"_all"},
|
187
|
+
{"_neo_id":844,
|
188
|
+
"direction":"outgoing",
|
189
|
+
"other_node":
|
190
|
+
{"_classname":"BirdiesBackend::Tag", "_neo_id":116, "name":"osm"},
|
191
|
+
"rel_type":"_all"},
|
192
|
+
{"_neo_id":842,
|
193
|
+
"direction":"outgoing",
|
194
|
+
"other_node":
|
195
|
+
{"_classname":"BirdiesBackend::Tweet",
|
196
|
+
"_neo_id":117,
|
197
|
+
"date":1306388636,
|
198
|
+
"link":"http://twitter.com/jesubellido/statuses/73625392455495680",
|
199
|
+
"short":"\342\200\234: Check out the Public Tran",
|
200
|
+
"text":
|
201
|
+
"\342\200\234@neo4j: Check out the @TransportDublin Public Transport Route Planner, based on #neo4j --> http://t.co/1KCAlCi #nosql #graphdb #gis #OSM\342\200\235",
|
202
|
+
"tweet_id":"73625392455495680"},
|
203
|
+
"rel_type":"_all"},
|
204
|
+
{"_neo_id":840,
|
205
|
+
"direction":"outgoing",
|
206
|
+
"other_node":
|
207
|
+
{"_classname":"BirdiesBackend::User",
|
208
|
+
"_neo_id":118,
|
209
|
+
"twid":"jesubellido"},
|
210
|
+
"rel_type":"_all"},
|
211
|
+
{"_neo_id":838,
|
212
|
+
"direction":"outgoing",
|
213
|
+
"other_node":
|
214
|
+
{"_classname":"BirdiesBackend::Link",
|
215
|
+
"_neo_id":119,
|
216
|
+
"url":"http://t.co/1KCAlCi"},
|
217
|
+
"rel_type":"_all"},
|
218
|
+
{"_neo_id":836,
|
219
|
+
"direction":"outgoing",
|
220
|
+
"other_node":
|
221
|
+
{"_classname":"BirdiesBackend::Tweet",
|
222
|
+
"_neo_id":111,
|
223
|
+
"date":1306392495,
|
224
|
+
"link":"http://twitter.com/alecorti28/statuses/73641580183040000",
|
225
|
+
"short":"RT : Check out the Public Tran",
|
226
|
+
"text":
|
227
|
+
"RT @neo4j: Check out the @TransportDublin Public Transport Route Planner, based on #neo4j --> http://www.TransportDublin.ie #nosql #graphdb #gis #OSM",
|
228
|
+
"tweet_id":"73641580183040000"},
|
229
|
+
"rel_type":"_all"},
|
230
|
+
{"_neo_id":834,
|
231
|
+
"direction":"outgoing",
|
232
|
+
"other_node":
|
233
|
+
{"_classname":"BirdiesBackend::User",
|
234
|
+
"_neo_id":144,
|
235
|
+
"twid":"ken_2scientists"},
|
236
|
+
"rel_type":"_all"},
|
237
|
+
{"_neo_id":832,
|
238
|
+
"direction":"outgoing",
|
239
|
+
"other_node":
|
240
|
+
{"_classname":"BirdiesBackend::User", "_neo_id":134, "twid":"nilanp"},
|
241
|
+
"rel_type":"_all"},
|
242
|
+
{"_neo_id":830,
|
243
|
+
"direction":"outgoing",
|
244
|
+
"other_node":
|
245
|
+
{"_classname":"BirdiesBackend::Tweet",
|
246
|
+
"_neo_id":135,
|
247
|
+
"date":1306361302,
|
248
|
+
"link":"http://twitter.com/jimwebber/statuses/73510747195449344",
|
249
|
+
"short":"RT : Check out the Public Tran",
|
250
|
+
"text":
|
251
|
+
"RT @neo4j: Check out the @TransportDublin Public Transport Route Planner, based on #neo4j --> http://www.TransportDublin.ie #nosql #graphdb #gis #OSM",
|
252
|
+
"tweet_id":"73510747195449344"},
|
253
|
+
"rel_type":"_all"},
|
254
|
+
{"_neo_id":828,
|
255
|
+
"direction":"outgoing",
|
256
|
+
"other_node":
|
257
|
+
{"_classname":"BirdiesBackend::Tweet",
|
258
|
+
"_neo_id":132,
|
259
|
+
"date":1306362021,
|
260
|
+
"link":"http://twitter.com/TransportDublin/statuses/73513762358951936",
|
261
|
+
"short":"RT : Check out the Public Tran",
|
262
|
+
"text":
|
263
|
+
"RT @neo4j: Check out the @TransportDublin Public Transport Route Planner, based on #neo4j --> http://www.TransportDublin.ie #nosql #graphdb #gis #OSM",
|
264
|
+
"tweet_id":"73513762358951936"},
|
265
|
+
"rel_type":"_all"},
|
266
|
+
{"_neo_id":826,
|
267
|
+
"direction":"outgoing",
|
268
|
+
"other_node":
|
269
|
+
{"_classname":"BirdiesBackend::Tweet",
|
270
|
+
"_neo_id":133,
|
271
|
+
"date":1306361684,
|
272
|
+
"link":"http://twitter.com/nilanp/statuses/73512349235019776",
|
273
|
+
"short":"RT : Check out the Public Tran",
|
274
|
+
"text":
|
275
|
+
"RT @neo4j: Check out the @TransportDublin Public Transport Route Planner, based on #neo4j --> http://www.TransportDublin.ie #nosql #graphdb #gis #OSM",
|
276
|
+
"tweet_id":"73512349235019776"},
|
277
|
+
"rel_type":"_all"},
|
278
|
+
{"_neo_id":824,
|
279
|
+
"direction":"outgoing",
|
280
|
+
"other_node":
|
281
|
+
{"_classname":"BirdiesBackend::Tweet",
|
282
|
+
"_neo_id":130,
|
283
|
+
"date":1306362381,
|
284
|
+
"link":"http://twitter.com/ghillairet/statuses/73515273893847040",
|
285
|
+
"short":"RT : Check out the Public Tran",
|
286
|
+
"text":
|
287
|
+
"RT @neo4j: Check out the @TransportDublin Public Transport Route Planner, based on #neo4j --> http://www.TransportDublin.ie #nosql #graphdb #gis #OSM",
|
288
|
+
"tweet_id":"73515273893847040"},
|
289
|
+
"rel_type":"_all"},
|
290
|
+
{"_neo_id":822,
|
291
|
+
"direction":"outgoing",
|
292
|
+
"other_node":
|
293
|
+
{"_classname":"BirdiesBackend::User",
|
294
|
+
"_neo_id":131,
|
295
|
+
"twid":"ghillairet"},
|
296
|
+
"rel_type":"_all"},
|
297
|
+
{"_neo_id":820,
|
298
|
+
"direction":"outgoing",
|
299
|
+
"other_node":
|
300
|
+
{"_classname":"BirdiesBackend::Tweet",
|
301
|
+
"_neo_id":128,
|
302
|
+
"date":1306364328,
|
303
|
+
"link":"http://twitter.com/marcjohnson/statuses/73523437527764992",
|
304
|
+
"short":"RT : Check out the Public Tran",
|
305
|
+
"text":
|
306
|
+
"RT @neo4j: Check out the @TransportDublin Public Transport Route Planner, based on #neo4j --> http://www.TransportDublin.ie #nosql #graphdb #gis #OSM",
|
307
|
+
"tweet_id":"73523437527764992"},
|
308
|
+
"rel_type":"_all"},
|
309
|
+
{"_neo_id":818,
|
310
|
+
"direction":"outgoing",
|
311
|
+
"other_node":
|
312
|
+
{"_classname":"BirdiesBackend::User",
|
313
|
+
"_neo_id":129,
|
314
|
+
"twid":"marcjohnson"},
|
315
|
+
"rel_type":"_all"},
|
316
|
+
{"_neo_id":816,
|
317
|
+
"direction":"outgoing",
|
318
|
+
"other_node":
|
319
|
+
{"_classname":"BirdiesBackend::Tweet",
|
320
|
+
"_neo_id":142,
|
321
|
+
"date":1306359759,
|
322
|
+
"link":"http://twitter.com/neo4j/statuses/73504273366925312",
|
323
|
+
"short":"Check out the Public Transport",
|
324
|
+
"text":
|
325
|
+
"Check out the @TransportDublin Public Transport Route Planner, based on #neo4j --> http://www.TransportDublin.ie #nosql #graphdb #gis #OSM",
|
326
|
+
"tweet_id":"73504273366925312"},
|
327
|
+
"rel_type":"_all"},
|
328
|
+
{"_neo_id":814,
|
329
|
+
"direction":"outgoing",
|
330
|
+
"other_node":
|
331
|
+
{"_classname":"BirdiesBackend::Tweet",
|
332
|
+
"_neo_id":143,
|
333
|
+
"date":1306358682,
|
334
|
+
"link":"http://twitter.com/Ken_2scientists/statuses/73499759712800768",
|
335
|
+
"short":"Hope I can make some time soon ",
|
336
|
+
"text":
|
337
|
+
"Hope I can make some time soon to play with #neo4j and Spring Data Graph. Sad there doesn't seem to be much traction on Spring Data Column",
|
338
|
+
"tweet_id":"73499759712800768"},
|
339
|
+
"rel_type":"_all"},
|
340
|
+
{"_neo_id":812,
|
341
|
+
"direction":"outgoing",
|
342
|
+
"other_node":
|
343
|
+
{"_classname":"BirdiesBackend::User",
|
344
|
+
"_neo_id":140,
|
345
|
+
"twid":"64bitchris"},
|
346
|
+
"rel_type":"_all"},
|
347
|
+
{"_neo_id":810,
|
348
|
+
"direction":"outgoing",
|
349
|
+
"other_node":
|
350
|
+
{"_classname":"BirdiesBackend::Tweet",
|
351
|
+
"_neo_id":141,
|
352
|
+
"date":1306359781,
|
353
|
+
"link":"http://twitter.com/peterneubauer/statuses/73504369512939520",
|
354
|
+
"short":"RT : Check out the Public Tran",
|
355
|
+
"text":
|
356
|
+
"RT @neo4j: Check out the @TransportDublin Public Transport Route Planner, based on #neo4j --> http://www.TransportDublin.ie #nosql #graphdb #gis #OSM",
|
357
|
+
"tweet_id":"73504369512939520"},
|
358
|
+
"rel_type":"_all"},
|
359
|
+
{"_neo_id":808,
|
360
|
+
"direction":"outgoing",
|
361
|
+
"other_node":
|
362
|
+
{"_classname":"BirdiesBackend::User",
|
363
|
+
"_neo_id":138,
|
364
|
+
"twid":"frescosecco"},
|
365
|
+
"rel_type":"_all"},
|
366
|
+
{"_neo_id":806,
|
367
|
+
"direction":"outgoing",
|
368
|
+
"other_node":
|
369
|
+
{"_classname":"BirdiesBackend::Tweet",
|
370
|
+
"_neo_id":139,
|
371
|
+
"date":1306360129,
|
372
|
+
"link":"http://twitter.com/64BitChris/statuses/73505827142643712",
|
373
|
+
"short":"RT : How graph databases can ma",
|
374
|
+
"text":
|
375
|
+
"RT @neo4j: How graph databases can make you a superstar, by @andres_taylor http://slidesha.re/kjKsMC #graphdb #nosql #JEE #neo4j",
|
376
|
+
"tweet_id":"73505827142643712"},
|
377
|
+
"rel_type":"_all"},
|
378
|
+
{"_neo_id":804,
|
379
|
+
"direction":"outgoing",
|
380
|
+
"other_node":
|
381
|
+
{"_classname":"BirdiesBackend::User",
|
382
|
+
"_neo_id":136,
|
383
|
+
"twid":"jimwebber"},
|
384
|
+
"rel_type":"_all"},
|
385
|
+
{"_neo_id":802,
|
386
|
+
"direction":"outgoing",
|
387
|
+
"other_node":
|
388
|
+
{"_classname":"BirdiesBackend::Tweet",
|
389
|
+
"_neo_id":137,
|
390
|
+
"date":1306360297,
|
391
|
+
"link":"http://twitter.com/frescosecco/statuses/73506530250588161",
|
392
|
+
"short":"RT : Check out the Public Tran",
|
393
|
+
"text":
|
394
|
+
"RT @neo4j: Check out the @TransportDublin Public Transport Route Planner, based on #neo4j --> http://www.TransportDublin.ie #nosql #graphdb #gis #OSM",
|
395
|
+
"tweet_id":"73506530250588161"},
|
396
|
+
"rel_type":"_all"},
|
397
|
+
{"_neo_id":576,
|
398
|
+
"direction":"outgoing",
|
399
|
+
"other_node":
|
400
|
+
{"_classname":"BirdiesBackend::User",
|
401
|
+
"_neo_id":105,
|
402
|
+
"twid":"_mark_burns"},
|
403
|
+
"rel_type":"_all"},
|
404
|
+
{"_neo_id":574,
|
405
|
+
"direction":"outgoing",
|
406
|
+
"other_node":
|
407
|
+
{"_classname":"BirdiesBackend::Tweet",
|
408
|
+
"_neo_id":104,
|
409
|
+
"date":1306400127,
|
410
|
+
"link":"http://twitter.com/_mark_burns/statuses/73673589055959040",
|
411
|
+
"short":"ask and ye shall receive. just ",
|
412
|
+
"text":
|
413
|
+
"ask and ye shall receive. just 'bundle update'ing but #neo4j 1.1 was released whilst i was asleep dependency - rails > 3.0.0. Woohoo",
|
414
|
+
"tweet_id":"73673589055959040"},
|
415
|
+
"rel_type":"_all"},
|
416
|
+
{"_neo_id":572,
|
417
|
+
"direction":"outgoing",
|
418
|
+
"other_node":
|
419
|
+
{"_classname":"BirdiesBackend::User", "_neo_id":107, "twid":"lgueye"},
|
420
|
+
"rel_type":"_all"},
|
421
|
+
{"_neo_id":570,
|
422
|
+
"direction":"outgoing",
|
423
|
+
"other_node":
|
424
|
+
{"_classname":"BirdiesBackend::Tweet",
|
425
|
+
"_neo_id":106,
|
426
|
+
"date":1306398840,
|
427
|
+
"link":"http://twitter.com/lgueye/statuses/73668193700417537",
|
428
|
+
"short":"Well, seems that believes in ",
|
429
|
+
"text":
|
430
|
+
"Well, seems that @acoyler believes in graph databases like #neo4j #wsnparis",
|
431
|
+
"tweet_id":"73668193700417537"},
|
432
|
+
"rel_type":"_all"},
|
433
|
+
{"_neo_id":568,
|
434
|
+
"direction":"outgoing",
|
435
|
+
"other_node":
|
436
|
+
{"_classname":"BirdiesBackend::Tag", "_neo_id":109, "name":"wsnparis"},
|
437
|
+
"rel_type":"_all"},
|
438
|
+
{"_neo_id":566,
|
439
|
+
"direction":"outgoing",
|
440
|
+
"other_node":
|
441
|
+
{"_classname":"BirdiesBackend::User", "_neo_id":108, "twid":"acoyler"},
|
442
|
+
"rel_type":"_all"},
|
443
|
+
{"_neo_id":564,
|
444
|
+
"direction":"outgoing",
|
445
|
+
"other_node":
|
446
|
+
{"_classname":"BirdiesBackend::Tweet",
|
447
|
+
"_neo_id":110,
|
448
|
+
"date":1306397085,
|
449
|
+
"link":"http://twitter.com/jordiv/statuses/73660833527373824",
|
450
|
+
"short":"Waiting for monday! It'll be a ",
|
451
|
+
"text":"Waiting for monday! It'll be a #neo4j day @ Barcelona :-))",
|
452
|
+
"tweet_id":"73660833527373824"},
|
453
|
+
"rel_type":"_all"},
|
454
|
+
{"_neo_id":562,
|
455
|
+
"direction":"outgoing",
|
456
|
+
"other_node":
|
457
|
+
{"_classname":"BirdiesBackend::User",
|
458
|
+
"_neo_id":97,
|
459
|
+
"twid":"neilellis"},
|
460
|
+
"rel_type":"_all"},
|
461
|
+
{"_neo_id":560,
|
462
|
+
"direction":"outgoing",
|
463
|
+
"other_node":
|
464
|
+
{"_classname":"BirdiesBackend::User",
|
465
|
+
"_neo_id":96,
|
466
|
+
"twid":"skillsmatter"},
|
467
|
+
"rel_type":"_all"},
|
468
|
+
{"_neo_id":558,
|
469
|
+
"direction":"outgoing",
|
470
|
+
"other_node":
|
471
|
+
{"_classname":"BirdiesBackend::User", "_neo_id":99, "twid":"jairamc"},
|
472
|
+
"rel_type":"_all"},
|
473
|
+
{"_neo_id":556,
|
474
|
+
"direction":"outgoing",
|
475
|
+
"other_node":
|
476
|
+
{"_classname":"BirdiesBackend::Tweet",
|
477
|
+
"_neo_id":98,
|
478
|
+
"date":1306403912,
|
479
|
+
"link":"http://twitter.com/jairamc/statuses/73689465536782336",
|
480
|
+
"short":"I'm going to a Meetup with Open",
|
481
|
+
"text":
|
482
|
+
"I'm going to a Meetup with OpenSource & Agile Community Events http://bit.ly/luSNCc #Neo4J",
|
483
|
+
"tweet_id":"73689465536782336"},
|
484
|
+
"rel_type":"_all"},
|
485
|
+
{"_neo_id":554,
|
486
|
+
"direction":"outgoing",
|
487
|
+
"other_node":
|
488
|
+
{"_classname":"BirdiesBackend::Tweet",
|
489
|
+
"_neo_id":101,
|
490
|
+
"date":1306403237,
|
491
|
+
"link":"http://twitter.com/iansrobinson/statuses/73686636273221632",
|
492
|
+
"short":" London UG meets 31st May, at ",
|
493
|
+
"text":
|
494
|
+
"#neo4j London UG meets 31st May, at @skillsmatter for beer + graph goodness. See @neilellis talk about graphs, collaboration & serendity",
|
495
|
+
"tweet_id":"73686636273221632"},
|
496
|
+
"rel_type":"_all"},
|
497
|
+
{"_neo_id":552,
|
498
|
+
"direction":"outgoing",
|
499
|
+
"other_node":
|
500
|
+
{"_classname":"BirdiesBackend::Link",
|
501
|
+
"_neo_id":100,
|
502
|
+
"url":"http://bit.ly/luSNCc"},
|
503
|
+
"rel_type":"_all"},
|
504
|
+
{"_neo_id":550,
|
505
|
+
"direction":"outgoing",
|
506
|
+
"other_node":
|
507
|
+
{"_classname":"BirdiesBackend::User", "_neo_id":103, "twid":"dbuduev"},
|
508
|
+
"rel_type":"_all"},
|
509
|
+
{"_neo_id":548,
|
510
|
+
"direction":"outgoing",
|
511
|
+
"other_node":
|
512
|
+
{"_classname":"BirdiesBackend::Tweet",
|
513
|
+
"_neo_id":102,
|
514
|
+
"date":1306400634,
|
515
|
+
"link":"http://twitter.com/dbuduev/statuses/73675716381782016",
|
516
|
+
"short":"RT : How graph databases can ma",
|
517
|
+
"text":
|
518
|
+
"RT @neo4j: How graph databases can make you a superstar, by @andres_taylor http://slidesha.re/kjKsMC #graphdb #nosql #JEE #neo4j",
|
519
|
+
"tweet_id":"73675716381782016"},
|
520
|
+
"rel_type":"_all"},
|
521
|
+
{"_neo_id":546,
|
522
|
+
"direction":"outgoing",
|
523
|
+
"other_node":
|
524
|
+
{"_classname":"BirdiesBackend::Tweet",
|
525
|
+
"_neo_id":90,
|
526
|
+
"date":1306419990,
|
527
|
+
"link":"http://twitter.com/ChrisDiehl/statuses/73756903179694080",
|
528
|
+
"short":"RT : Graph Bootcamp: Chicago Su",
|
529
|
+
"text":
|
530
|
+
"RT @twarko: Graph Bootcamp: Chicago Summer 2011 -- http://graphbootcamp.eventbrite.com/ #graphdb #neo4j #orientdb",
|
531
|
+
"tweet_id":"73756903179694080"},
|
532
|
+
"rel_type":"_all"},
|
533
|
+
{"_neo_id":544,
|
534
|
+
"direction":"outgoing",
|
535
|
+
"other_node":
|
536
|
+
{"_classname":"BirdiesBackend::User",
|
537
|
+
"_neo_id":91,
|
538
|
+
"twid":"chrisdiehl"},
|
539
|
+
"rel_type":"_all"},
|
540
|
+
{"_neo_id":542,
|
541
|
+
"direction":"outgoing",
|
542
|
+
"other_node":
|
543
|
+
{"_classname":"BirdiesBackend::Tweet",
|
544
|
+
"_neo_id":88,
|
545
|
+
"date":1306422283,
|
546
|
+
"link":"http://twitter.com/lgarulli/statuses/73766518135074816",
|
547
|
+
"short":"RT : Graph Bootcamp: Chicago Su",
|
548
|
+
"text":
|
549
|
+
"RT @twarko: Graph Bootcamp: Chicago Summer 2011 -- http://graphbootcamp.eventbrite.com/ #graphdb #neo4j #orientdb",
|
550
|
+
"tweet_id":"73766518135074816"},
|
551
|
+
"rel_type":"_all"},
|
552
|
+
{"_neo_id":540,
|
553
|
+
"direction":"outgoing",
|
554
|
+
"other_node":
|
555
|
+
{"_classname":"BirdiesBackend::User", "_neo_id":89, "twid":"lgarulli"},
|
556
|
+
"rel_type":"_all"},
|
557
|
+
{"_neo_id":538,
|
558
|
+
"direction":"outgoing",
|
559
|
+
"other_node":
|
560
|
+
{"_classname":"BirdiesBackend::User", "_neo_id":94, "twid":"noppanit"},
|
561
|
+
"rel_type":"_all"},
|
562
|
+
{"_neo_id":536,
|
563
|
+
"direction":"outgoing",
|
564
|
+
"other_node":
|
565
|
+
{"_classname":"BirdiesBackend::User",
|
566
|
+
"_neo_id":95,
|
567
|
+
"twid":"iansrobinson"},
|
568
|
+
"rel_type":"_all"},
|
569
|
+
{"_neo_id":534,
|
570
|
+
"direction":"outgoing",
|
571
|
+
"other_node":
|
572
|
+
{"_classname":"BirdiesBackend::Tweet",
|
573
|
+
"_neo_id":92,
|
574
|
+
"date":1306418079,
|
575
|
+
"link":"http://twitter.com/twarko/statuses/73748887495647233",
|
576
|
+
"short":"Graph Bootcamp: Chicago Summer ",
|
577
|
+
"text":
|
578
|
+
"Graph Bootcamp: Chicago Summer 2011 -- http://graphbootcamp.eventbrite.com/ #graphdb #neo4j #orientdb",
|
579
|
+
"tweet_id":"73748887495647233"},
|
580
|
+
"rel_type":"_all"},
|
581
|
+
{"_neo_id":532,
|
582
|
+
"direction":"outgoing",
|
583
|
+
"other_node":
|
584
|
+
{"_classname":"BirdiesBackend::Tweet",
|
585
|
+
"_neo_id":93,
|
586
|
+
"date":1306404061,
|
587
|
+
"link":"http://twitter.com/noppanit/statuses/73690089934434304",
|
588
|
+
"short":"RT : London UG meets 31st May,",
|
589
|
+
"text":
|
590
|
+
"RT @iansrobinson: #neo4j London UG meets 31st May, at @skillsmatter for beer + graph goodness. See @neilellis talk about graphs, collaboration & serendity",
|
591
|
+
"tweet_id":"73690089934434304"},
|
592
|
+
"rel_type":"_all"},
|
593
|
+
{"_neo_id":530,
|
594
|
+
"direction":"outgoing",
|
595
|
+
"other_node":
|
596
|
+
{"_classname":"BirdiesBackend::Tag", "_neo_id":82, "name":"hadoop"},
|
597
|
+
"rel_type":"_all"},
|
598
|
+
{"_neo_id":528,
|
599
|
+
"direction":"outgoing",
|
600
|
+
"other_node":
|
601
|
+
{"_classname":"BirdiesBackend::Tag", "_neo_id":83, "name":"mongodb"},
|
602
|
+
"rel_type":"_all"},
|
603
|
+
{"_neo_id":526,
|
604
|
+
"direction":"outgoing",
|
605
|
+
"other_node":
|
606
|
+
{"_classname":"BirdiesBackend::User",
|
607
|
+
"_neo_id":80,
|
608
|
+
"twid":"nosqlweekly"},
|
609
|
+
"rel_type":"_all"},
|
610
|
+
{"_neo_id":524,
|
611
|
+
"direction":"outgoing",
|
612
|
+
"other_node":
|
613
|
+
{"_classname":"BirdiesBackend::Link",
|
614
|
+
"_neo_id":81,
|
615
|
+
"url":"http://eepurl.com/d0yyH"},
|
616
|
+
"rel_type":"_all"},
|
617
|
+
{"_neo_id":522,
|
618
|
+
"direction":"outgoing",
|
619
|
+
"other_node":
|
620
|
+
{"_classname":"BirdiesBackend::Tag", "_neo_id":86, "name":"job"},
|
621
|
+
"rel_type":"_all"},
|
622
|
+
{"_neo_id":520,
|
623
|
+
"direction":"outgoing",
|
624
|
+
"other_node":
|
625
|
+
{"_classname":"BirdiesBackend::Tweet",
|
626
|
+
"_neo_id":87,
|
627
|
+
"date":1306426414,
|
628
|
+
"link":"http://twitter.com/peterneubauer/statuses/73783848462327808",
|
629
|
+
"short":"If you wanna learn graph wizard",
|
630
|
+
"text":
|
631
|
+
"If you wanna learn graph wizardry, sign up for the Graph Bootcamp! http://graphbootcamp.eventbrite.com/ #neo4j #graphdb #nosql",
|
632
|
+
"tweet_id":"73783848462327808"},
|
633
|
+
"rel_type":"_all"},
|
634
|
+
{"_neo_id":518,
|
635
|
+
"direction":"outgoing",
|
636
|
+
"other_node":
|
637
|
+
{"_classname":"BirdiesBackend::Tag", "_neo_id":84, "name":"redis"},
|
638
|
+
"rel_type":"_all"},
|
639
|
+
{"_neo_id":516,
|
640
|
+
"direction":"outgoing",
|
641
|
+
"other_node":
|
642
|
+
{"_classname":"BirdiesBackend::Tag", "_neo_id":85, "name":"couchdb"},
|
643
|
+
"rel_type":"_all"},
|
644
|
+
{"_neo_id":514,
|
645
|
+
"direction":"outgoing",
|
646
|
+
"other_node":
|
647
|
+
{"_classname":"BirdiesBackend::Tweet",
|
648
|
+
"_neo_id":75,
|
649
|
+
"date":1306430595,
|
650
|
+
"link":"http://twitter.com/BrunoNeckebroek/statuses/73801384847355904",
|
651
|
+
"short":"Reading up on i can think of s",
|
652
|
+
"text":
|
653
|
+
"Reading up on #neo4j i can think of some nice cases to implement, just need to get started...",
|
654
|
+
"tweet_id":"73801384847355904"},
|
655
|
+
"rel_type":"_all"},
|
656
|
+
{"_neo_id":512,
|
657
|
+
"direction":"outgoing",
|
658
|
+
"other_node":
|
659
|
+
{"_classname":"BirdiesBackend::Tweet",
|
660
|
+
"_neo_id":74,
|
661
|
+
"date":1306432244,
|
662
|
+
"link":"http://twitter.com/ahzf/statuses/73808300474511360",
|
663
|
+
"short":"RT : If you wanna learn graph w",
|
664
|
+
"text": "RT @peterneubauer: If you wanna learn graph wizardry, sign up for the Graph Bootcamp! http://graphbootcamp.eventbrite.com/ #neo4j #graphdb #nosql",
|
665
|
+
"tweet_id":"73808300474511360"},
|
666
|
+
"rel_type":"_all"},
|
667
|
+
{"_neo_id":510,
|
668
|
+
"direction":"outgoing",
|
669
|
+
"other_node":
|
670
|
+
{"_classname":"BirdiesBackend::User",
|
671
|
+
"_neo_id":79,
|
672
|
+
"twid":"rahulgchaudhary"},
|
673
|
+
"rel_type":"_all"},
|
674
|
+
{"_neo_id":508,
|
675
|
+
"direction":"outgoing",
|
676
|
+
"other_node":
|
677
|
+
{"_classname":"BirdiesBackend::Tweet",
|
678
|
+
"_neo_id":78,
|
679
|
+
"date":1306426861,
|
680
|
+
"link":"http://twitter.com/rahulgchaudhary/statuses/73785723408490496",
|
681
|
+
"short":"RT : NoSQL Weekly (Issue 26 - M",
|
682
|
+
"text":
|
683
|
+
"RT @nosqlweekly: NoSQL Weekly (Issue 26 - May 26, 2011) - http://eepurl.com/d0yyH #nosql #hadoop #mongodb #redis #couchdb #neo4j #job",
|
684
|
+
"tweet_id":"73785723408490496"},
|
685
|
+
"rel_type":"_all"},
|
686
|
+
{"_neo_id":506,
|
687
|
+
"direction":"outgoing",
|
688
|
+
"other_node":
|
689
|
+
{"_classname":"BirdiesBackend::Tweet",
|
690
|
+
"_neo_id":77,
|
691
|
+
"date":1306428934,
|
692
|
+
"link":"http://twitter.com/neo4j/statuses/73794416363585536",
|
693
|
+
"short":"RT : If you wanna learn graph w",
|
694
|
+
"text":
|
695
|
+
"RT @peterneubauer: If you wanna learn graph wizardry, sign up for the Graph Bootcamp! http://graphbootcamp.eventbrite.com/ #neo4j #graphdb #nosql",
|
696
|
+
"tweet_id":"73794416363585536"},
|
697
|
+
"rel_type":"_all"},
|
698
|
+
{"_neo_id":504,
|
699
|
+
"direction":"outgoing",
|
700
|
+
"other_node":
|
701
|
+
{"_classname":"BirdiesBackend::User",
|
702
|
+
"_neo_id":76,
|
703
|
+
"twid":"brunoneckebroek"},
|
704
|
+
"rel_type":"_all"},
|
705
|
+
{"_neo_id":367,
|
706
|
+
"direction":"outgoing",
|
707
|
+
"other_node":
|
708
|
+
{"_classname":"BirdiesBackend::Link",
|
709
|
+
"_neo_id":60,
|
710
|
+
"url":"http://slidesha.re/kjKsMC"},
|
711
|
+
"rel_type":"_all"},
|
712
|
+
{"_neo_id":365,
|
713
|
+
"direction":"outgoing",
|
714
|
+
"other_node":
|
715
|
+
{"_classname":"BirdiesBackend::Tag", "_neo_id":61, "name":"jee"},
|
716
|
+
"rel_type":"_all"},
|
717
|
+
{"_neo_id":363,
|
718
|
+
"direction":"outgoing",
|
719
|
+
"other_node":
|
720
|
+
{"_classname":"BirdiesBackend::Tweet",
|
721
|
+
"_neo_id":62,
|
722
|
+
"date":1306437455,
|
723
|
+
"link":"http://twitter.com/emileifrem/statuses/73830154262155264",
|
724
|
+
"short":"RT : How graph databases can ma",
|
725
|
+
"text":
|
726
|
+
"RT @neo4j: How graph databases can make you a superstar, by @andres_taylor http://slidesha.re/kjKsMC #graphdb #nosql #JEE #neo4j",
|
727
|
+
"tweet_id":"73830154262155264"},
|
728
|
+
"rel_type":"_all"},
|
729
|
+
{"_neo_id":361,
|
730
|
+
"direction":"outgoing",
|
731
|
+
"other_node":
|
732
|
+
{"_classname":"BirdiesBackend::Tweet",
|
733
|
+
"_neo_id":63,
|
734
|
+
"date":1306434132,
|
735
|
+
"link":"http://twitter.com/bobbynorton/statuses/73816218380935169",
|
736
|
+
"short":"RT : Graph Bootcamp: Chicago Su",
|
737
|
+
"text":
|
738
|
+
"RT @twarko: Graph Bootcamp: Chicago Summer 2011 -- http://graphbootcamp.eventbrite.com/ #graphdb #neo4j #orientdb",
|
739
|
+
"tweet_id":"73816218380935169"},
|
740
|
+
"rel_type":"_all"},
|
741
|
+
{"_neo_id":359,
|
742
|
+
"direction":"outgoing",
|
743
|
+
"other_node":
|
744
|
+
{"_classname":"BirdiesBackend::Tag", "_neo_id":56, "name":"graphdb"},
|
745
|
+
"rel_type":"_all"},
|
746
|
+
{"_neo_id":357,
|
747
|
+
"direction":"outgoing",
|
748
|
+
"other_node":
|
749
|
+
{"_classname":"BirdiesBackend::Tweet",
|
750
|
+
"_neo_id":57,
|
751
|
+
"date":1306437485,
|
752
|
+
"link":"http://twitter.com/jordiv/statuses/73830279638294528",
|
753
|
+
"short":"RT : How graph databases can ma",
|
754
|
+
"text":
|
755
|
+
"RT @neo4j: How graph databases can make you a superstar, by @andres_taylor http://slidesha.re/kjKsMC #graphdb #nosql #JEE #neo4j",
|
756
|
+
"tweet_id":"73830279638294528"},
|
757
|
+
"rel_type":"_all"},
|
758
|
+
{"_neo_id":355,
|
759
|
+
"direction":"outgoing",
|
760
|
+
"other_node":
|
761
|
+
{"_classname":"BirdiesBackend::User", "_neo_id":58, "twid":"jordiv"},
|
762
|
+
"rel_type":"_all"},
|
763
|
+
{"_neo_id":353,
|
764
|
+
"direction":"outgoing",
|
765
|
+
"other_node":
|
766
|
+
{"_classname":"BirdiesBackend::User",
|
767
|
+
"_neo_id":59,
|
768
|
+
"twid":"andres_taylor"},
|
769
|
+
"rel_type":"_all"},
|
770
|
+
{"_neo_id":351,
|
771
|
+
"direction":"outgoing",
|
772
|
+
"other_node":
|
773
|
+
{"_classname":"BirdiesBackend::Tweet",
|
774
|
+
"_neo_id":52,
|
775
|
+
"date":1306441507,
|
776
|
+
"link":"http://twitter.com/leifwickland/statuses/73847149556809728",
|
777
|
+
"short":"Graph databases: \nuse cases and",
|
778
|
+
"text":
|
779
|
+
"Graph databases: \nuse cases and applications \n- Emil Eifrem, Neo4j @emileifrem #neo4j #gluecon",
|
780
|
+
"tweet_id":"73847149556809728"},
|
781
|
+
"rel_type":"_all"},
|
782
|
+
{"_neo_id":349,
|
783
|
+
"direction":"outgoing",
|
784
|
+
"other_node":
|
785
|
+
{"_classname":"BirdiesBackend::Tweet",
|
786
|
+
"_neo_id":53,
|
787
|
+
"date":1306437485,
|
788
|
+
"link":"http://twitter.com/emileifrem/statuses/73830280250671104",
|
789
|
+
"short":"RT : If you wanna learn graph w",
|
790
|
+
"text":
|
791
|
+
"RT @peterneubauer: If you wanna learn graph wizardry, sign up for the Graph Bootcamp! http://graphbootcamp.eventbrite.com/ #neo4j #graphdb #nosql",
|
792
|
+
"tweet_id":"73830280250671104"},
|
793
|
+
"rel_type":"_all"},
|
794
|
+
{"_neo_id":347,
|
795
|
+
"direction":"outgoing",
|
796
|
+
"other_node":
|
797
|
+
{"_classname":"BirdiesBackend::User",
|
798
|
+
"_neo_id":54,
|
799
|
+
"twid":"peterneubauer"},
|
800
|
+
"rel_type":"_all"},
|
801
|
+
{"_neo_id":345,
|
802
|
+
"direction":"outgoing",
|
803
|
+
"other_node":
|
804
|
+
{"_classname":"BirdiesBackend::Link",
|
805
|
+
"_neo_id":55,
|
806
|
+
"url":"http://graphbootcamp.eventbrite.com/"},
|
807
|
+
"rel_type":"_all"},
|
808
|
+
{"_neo_id":343,
|
809
|
+
"direction":"outgoing",
|
810
|
+
"other_node":
|
811
|
+
{"_classname":"BirdiesBackend::Tag",
|
812
|
+
"_neo_id":48,
|
813
|
+
"name":"graphdatabase"},
|
814
|
+
"rel_type":"_all"},
|
815
|
+
{"_neo_id":341,
|
816
|
+
"direction":"outgoing",
|
817
|
+
"other_node":
|
818
|
+
{"_classname":"BirdiesBackend::User", "_neo_id":49, "twid":"neo4j"},
|
819
|
+
"rel_type":"_all"},
|
820
|
+
{"_neo_id":339,
|
821
|
+
"direction":"outgoing",
|
822
|
+
"other_node":
|
823
|
+
{"_classname":"BirdiesBackend::Tweet",
|
824
|
+
"_neo_id":50,
|
825
|
+
"date":1306441762,
|
826
|
+
"link":"http://twitter.com/leifwickland/statuses/73848219033026560",
|
827
|
+
"short":"Four emerging NoSQL categories:",
|
828
|
+
"text":
|
829
|
+
"Four emerging NoSQL categories: Key Value, ColumnFamily, Document, Graph. @emileifrem #neo4j #gluecon",
|
830
|
+
"tweet_id":"73848219033026560"},
|
831
|
+
"rel_type":"_all"},
|
832
|
+
{"_neo_id":337,
|
833
|
+
"direction":"outgoing",
|
834
|
+
"other_node":
|
835
|
+
{"_classname":"BirdiesBackend::Tweet",
|
836
|
+
"_neo_id":51,
|
837
|
+
"date":1306441743,
|
838
|
+
"link":"http://twitter.com/angilly/statuses/73848139437707265",
|
839
|
+
"short":"Document DBS were inspired by l",
|
840
|
+
"text":
|
841
|
+
"Document DBS were inspired by lotus notes? What have we done?!? #neo4j #gluecon",
|
842
|
+
"tweet_id":"73848139437707265"},
|
843
|
+
"rel_type":"_all"},
|
844
|
+
{"_neo_id":335,
|
845
|
+
"direction":"outgoing",
|
846
|
+
"other_node":
|
847
|
+
{"_classname":"BirdiesBackend::Tweet",
|
848
|
+
"_neo_id":45,
|
849
|
+
"date":1306441891,
|
850
|
+
"link":"http://twitter.com/leifwickland/statuses/73848760270192640",
|
851
|
+
"short":"RT : Document DBS were inspired",
|
852
|
+
"text":
|
853
|
+
"RT @angilly: Document DBS were inspired by lotus notes? What have we done?!? #neo4j #gluecon",
|
854
|
+
"tweet_id":"73848760270192640"},
|
855
|
+
"rel_type":"_all"},
|
856
|
+
{"_neo_id":333,
|
857
|
+
"direction":"outgoing",
|
858
|
+
"other_node":
|
859
|
+
{"_classname":"BirdiesBackend::Tweet",
|
860
|
+
"_neo_id":44,
|
861
|
+
"date":1306441908,
|
862
|
+
"link":"http://twitter.com/JFP/statuses/73848834639413250",
|
863
|
+
"short":" says there are two axes of dat",
|
864
|
+
"text":
|
865
|
+
"@emileifrem says there are two axes of data scalability: data size and data complexity. #neo4j #gluecon",
|
866
|
+
"tweet_id":"73848834639413250"},
|
867
|
+
"rel_type":"_all"},
|
868
|
+
{"_neo_id":331,
|
869
|
+
"direction":"outgoing",
|
870
|
+
"other_node":
|
871
|
+
{"_classname":"BirdiesBackend::Tag", "_neo_id":47, "name":"nosql"},
|
872
|
+
"rel_type":"_all"},
|
873
|
+
{"_neo_id":329,
|
874
|
+
"direction":"outgoing",
|
875
|
+
"other_node":
|
876
|
+
{"_classname":"BirdiesBackend::Tweet",
|
877
|
+
"_neo_id":46,
|
878
|
+
"date":1306441812,
|
879
|
+
"link":"http://twitter.com/noveltysystems/statuses/73848430564352001",
|
880
|
+
"short":"Graph databases: use cases and ",
|
881
|
+
"text":
|
882
|
+
"Graph databases: use cases and applications #nosql #graphdatabase #Neo4j @Neo4j",
|
883
|
+
"tweet_id":"73848430564352001"},
|
884
|
+
"rel_type":"_all"},
|
885
|
+
{"_neo_id":327,
|
886
|
+
"direction":"outgoing",
|
887
|
+
"other_node":
|
888
|
+
{"_classname":"BirdiesBackend::Tweet",
|
889
|
+
"_neo_id":41,
|
890
|
+
"date":1306442028,
|
891
|
+
"link":"http://twitter.com/angilly/statuses/73849337989431296",
|
892
|
+
"short":""the zone of SQL adequacy&",
|
893
|
+
"text":
|
894
|
+
""the zone of SQL adequacy" #neo4j #Gluecon #bestNewPhrase",
|
895
|
+
"tweet_id":"73849337989431296"},
|
896
|
+
"rel_type":"_all"},
|
897
|
+
{"_neo_id":325,
|
898
|
+
"direction":"outgoing",
|
899
|
+
"other_node":
|
900
|
+
{"_classname":"BirdiesBackend::Tweet",
|
901
|
+
"_neo_id":43,
|
902
|
+
"date":1306442011,
|
903
|
+
"link":"http://twitter.com/JFP/statuses/73849264165502976",
|
904
|
+
"short":"NoSQL is for applications that ",
|
905
|
+
"text":
|
906
|
+
"NoSQL is for applications that are out of the zone of "sql adequacy" #gluecon #neo4j",
|
907
|
+
"tweet_id":"73849264165502976"},
|
908
|
+
"rel_type":"_all"},
|
909
|
+
{"_neo_id":323,
|
910
|
+
"direction":"outgoing",
|
911
|
+
"other_node":
|
912
|
+
{"_classname":"BirdiesBackend::Tweet",
|
913
|
+
"_neo_id":42,
|
914
|
+
"date":1306442011,
|
915
|
+
"link":"http://twitter.com/noveltysystems/statuses/73849265893539840",
|
916
|
+
"short":"RT : Graph databases: \nuse case",
|
917
|
+
"text":
|
918
|
+
"RT @leifwickland: Graph databases: \nuse cases and applications \n- Emil Eifrem, Neo4j @emileifrem #neo4j #gluecon",
|
919
|
+
"tweet_id":"73849265893539840"},
|
920
|
+
"rel_type":"_all"},
|
921
|
+
{"_neo_id":321,
|
922
|
+
"direction":"outgoing",
|
923
|
+
"other_node":
|
924
|
+
{"_classname":"BirdiesBackend::Tag", "_neo_id":73, "name":"cfoundry"},
|
925
|
+
"rel_type":"_all"},
|
926
|
+
{"_neo_id":319,
|
927
|
+
"direction":"outgoing",
|
928
|
+
"other_node":
|
929
|
+
{"_classname":"BirdiesBackend::User",
|
930
|
+
"_neo_id":72,
|
931
|
+
"twid":"adriancolyer"},
|
932
|
+
"rel_type":"_all"},
|
933
|
+
{"_neo_id":317,
|
934
|
+
"direction":"outgoing",
|
935
|
+
"other_node":
|
936
|
+
{"_classname":"BirdiesBackend::Tweet",
|
937
|
+
"_neo_id":67,
|
938
|
+
"date":1306432523,
|
939
|
+
"link":"http://twitter.com/ahzf/statuses/73809469800329217",
|
940
|
+
"short":"RT : Graph Bootcamp: Chicago Su",
|
941
|
+
"text":
|
942
|
+
"RT @twarko: Graph Bootcamp: Chicago Summer 2011 -- http://graphbootcamp.eventbrite.com/ #graphdb #neo4j #orientdb",
|
943
|
+
"tweet_id":"73809469800329217"},
|
944
|
+
"rel_type":"_all"},
|
945
|
+
{"_neo_id":315,
|
946
|
+
"direction":"outgoing",
|
947
|
+
"other_node":
|
948
|
+
{"_classname":"BirdiesBackend::Tag", "_neo_id":66, "name":"orientdb"},
|
949
|
+
"rel_type":"_all"},
|
950
|
+
{"_neo_id":313,
|
951
|
+
"direction":"outgoing",
|
952
|
+
"other_node":
|
953
|
+
{"_classname":"BirdiesBackend::User", "_neo_id":65, "twid":"twarko"},
|
954
|
+
"rel_type":"_all"},
|
955
|
+
{"_neo_id":311,
|
956
|
+
"direction":"outgoing",
|
957
|
+
"other_node":
|
958
|
+
{"_classname":"BirdiesBackend::User",
|
959
|
+
"_neo_id":64,
|
960
|
+
"twid":"bobbynorton"},
|
961
|
+
"rel_type":"_all"},
|
962
|
+
{"_neo_id":309,
|
963
|
+
"direction":"outgoing",
|
964
|
+
"other_node":
|
965
|
+
{"_classname":"BirdiesBackend::User",
|
966
|
+
"_neo_id":71,
|
967
|
+
"twid":"agnes_crepet"},
|
968
|
+
"rel_type":"_all"},
|
969
|
+
{"_neo_id":307,
|
970
|
+
"direction":"outgoing",
|
971
|
+
"other_node":
|
972
|
+
{"_classname":"BirdiesBackend::User", "_neo_id":70, "twid":"mesirii"},
|
973
|
+
"rel_type":"_all"},
|
974
|
+
{"_neo_id":305,
|
975
|
+
"direction":"outgoing",
|
976
|
+
"other_node":
|
977
|
+
{"_classname":"BirdiesBackend::Tweet",
|
978
|
+
"_neo_id":69,
|
979
|
+
"date":1306432328,
|
980
|
+
"link":"http://twitter.com/mesirii/statuses/73808653223854081",
|
981
|
+
"short":" We're working on that already",
|
982
|
+
"text":
|
983
|
+
"@agnes_crepet @adriancolyer We're working on that already runs see our forked vcap repositories at github #cfoundry #neo4j #graphdb",
|
984
|
+
"tweet_id":"73808653223854081"},
|
985
|
+
"rel_type":"_all"},
|
986
|
+
{"_neo_id":303,
|
987
|
+
"direction":"outgoing",
|
988
|
+
"other_node":
|
989
|
+
{"_classname":"BirdiesBackend::User", "_neo_id":68, "twid":"ahzf"},
|
990
|
+
"rel_type":"_all"},
|
991
|
+
{"_neo_id":181,
|
992
|
+
"direction":"outgoing",
|
993
|
+
"other_node":
|
994
|
+
{"_classname":"BirdiesBackend::Tweet",
|
995
|
+
"_neo_id":40,
|
996
|
+
"date":1306442086,
|
997
|
+
"link":"http://twitter.com/noveltysystems/statuses/73849581426839552",
|
998
|
+
"short":"RT : Four emerging NoSQL catego",
|
999
|
+
"text":
|
1000
|
+
"RT @leifwickland: Four emerging NoSQL categories: Key Value, ColumnFamily, Document, Graph. @emileifrem #neo4j #gluecon",
|
1001
|
+
"tweet_id":"73849581426839552"},
|
1002
|
+
"rel_type":"_all"},
|
1003
|
+
{"_neo_id":179,
|
1004
|
+
"direction":"outgoing",
|
1005
|
+
"other_node":
|
1006
|
+
{"_classname":"BirdiesBackend::Link",
|
1007
|
+
"_neo_id":37,
|
1008
|
+
"url":"http://youtu.be/dN8ADE8QpTM"},
|
1009
|
+
"rel_type":"_all"},
|
1010
|
+
{"_neo_id":177,
|
1011
|
+
"direction":"outgoing",
|
1012
|
+
"other_node":
|
1013
|
+
{"_classname":"BirdiesBackend::User", "_neo_id":36, "twid":"solso"},
|
1014
|
+
"rel_type":"_all"},
|
1015
|
+
{"_neo_id":175,
|
1016
|
+
"direction":"outgoing",
|
1017
|
+
"other_node":
|
1018
|
+
{"_classname":"BirdiesBackend::Tweet",
|
1019
|
+
"_neo_id":39,
|
1020
|
+
"date":1306442094,
|
1021
|
+
"link":"http://twitter.com/ryanwi/statuses/73849614150811649",
|
1022
|
+
"short":""The zone of SQL adequacy&",
|
1023
|
+
"text":
|
1024
|
+
""The zone of SQL adequacy" generates quite a response. #neo4j #gluecon",
|
1025
|
+
"tweet_id":"73849614150811649"},
|
1026
|
+
"rel_type":"_all"},
|
1027
|
+
{"_neo_id":173,
|
1028
|
+
"direction":"outgoing",
|
1029
|
+
"other_node":
|
1030
|
+
{"_classname":"BirdiesBackend::Tweet",
|
1031
|
+
"_neo_id":38,
|
1032
|
+
"date":1306442114,
|
1033
|
+
"link":"http://twitter.com/noveltysystems/statuses/73849696929595392",
|
1034
|
+
"short":"RT : says there are two axes o",
|
1035
|
+
"text":
|
1036
|
+
"RT @JFP: @emileifrem says there are two axes of data scalability: data size and data complexity. #neo4j #gluecon",
|
1037
|
+
"tweet_id":"73849696929595392"},
|
1038
|
+
"rel_type":"_all"},
|
1039
|
+
{"_neo_id":171,
|
1040
|
+
"direction":"outgoing",
|
1041
|
+
"other_node":
|
1042
|
+
{"_classname":"BirdiesBackend::User", "_neo_id":33, "twid":"dpe82"},
|
1043
|
+
"rel_type":"_all"},
|
1044
|
+
{"_neo_id":169,
|
1045
|
+
"direction":"outgoing",
|
1046
|
+
"other_node":
|
1047
|
+
{"_classname":"BirdiesBackend::Tweet",
|
1048
|
+
"_neo_id":32,
|
1049
|
+
"date":1306442282,
|
1050
|
+
"link":"http://twitter.com/dpe82/statuses/73850402398932992",
|
1051
|
+
"short":"RT : "the zone of SQL adeq",
|
1052
|
+
"text":
|
1053
|
+
"RT @angilly: "the zone of SQL adequacy" #neo4j #Gluecon #bestNewPhrase",
|
1054
|
+
"tweet_id":"73850402398932992"},
|
1055
|
+
"rel_type":"_all"},
|
1056
|
+
{"_neo_id":167,
|
1057
|
+
"direction":"outgoing",
|
1058
|
+
"other_node":
|
1059
|
+
{"_classname":"BirdiesBackend::Tweet",
|
1060
|
+
"_neo_id":35,
|
1061
|
+
"date":1306442139,
|
1062
|
+
"link":"http://twitter.com/solso/statuses/73849803670425600",
|
1063
|
+
"short":" talk about at !! wish they us",
|
1064
|
+
"text":
|
1065
|
+
"@emileifrem talk about #neo4j at #gluecon!! wish they used the locality preserving graph partitioning alg in http://youtu.be/dN8ADE8QpTM :)",
|
1066
|
+
"tweet_id":"73849803670425600"},
|
1067
|
+
"rel_type":"_all"},
|
1068
|
+
{"_neo_id":165,
|
1069
|
+
"direction":"outgoing",
|
1070
|
+
"other_node":
|
1071
|
+
{"_classname":"BirdiesBackend::Tweet",
|
1072
|
+
"_neo_id":34,
|
1073
|
+
"date":1306442162,
|
1074
|
+
"link":"http://twitter.com/noveltysystems/statuses/73849900177170432",
|
1075
|
+
"short":"RT : "the zone of SQL adeq",
|
1076
|
+
"text":
|
1077
|
+
"RT @angilly: "the zone of SQL adequacy" #neo4j #Gluecon #bestNewPhrase",
|
1078
|
+
"tweet_id":"73849900177170432"},
|
1079
|
+
"rel_type":"_all"},
|
1080
|
+
{"_neo_id":163,
|
1081
|
+
"direction":"outgoing",
|
1082
|
+
"other_node":
|
1083
|
+
{"_classname":"BirdiesBackend::Tweet",
|
1084
|
+
"_neo_id":30,
|
1085
|
+
"date":1306442465,
|
1086
|
+
"link":"http://twitter.com/ryanwi/statuses/73851167171555328",
|
1087
|
+
"short":"Whiteboard Friendly ",
|
1088
|
+
"text":"Whiteboard Friendly #neo4j #gluecon",
|
1089
|
+
"tweet_id":"73851167171555328"},
|
1090
|
+
"rel_type":"_all"},
|
1091
|
+
{"_neo_id":161,
|
1092
|
+
"direction":"outgoing",
|
1093
|
+
"other_node":
|
1094
|
+
{"_classname":"BirdiesBackend::User", "_neo_id":31, "twid":"ryanwi"},
|
1095
|
+
"rel_type":"_all"},
|
1096
|
+
{"_neo_id":159,
|
1097
|
+
"direction":"outgoing",
|
1098
|
+
"other_node":
|
1099
|
+
{"_classname":"BirdiesBackend::Tag", "_neo_id":28, "name":"dangerous"},
|
1100
|
+
"rel_type":"_all"},
|
1101
|
+
{"_neo_id":157,
|
1102
|
+
"direction":"outgoing",
|
1103
|
+
"other_node":
|
1104
|
+
{"_classname":"BirdiesBackend::Tag", "_neo_id":29, "name":"nogis"},
|
1105
|
+
"rel_type":"_all"},
|
1106
|
+
{"_neo_id":155,
|
1107
|
+
"direction":"outgoing",
|
1108
|
+
"other_node":
|
1109
|
+
{"_classname":"BirdiesBackend::Tweet",
|
1110
|
+
"_neo_id":26,
|
1111
|
+
"date":1306442500,
|
1112
|
+
"link":"http://twitter.com/spara/statuses/73851316585234433",
|
1113
|
+
"short":"In preso, experiencing delusio",
|
1114
|
+
"text":
|
1115
|
+
"In #Neo4J preso, experiencing delusions of grandeur for implementing #dangerous #NoGIS #gluecon",
|
1116
|
+
"tweet_id":"73851316585234433"},
|
1117
|
+
"rel_type":"_all"},
|
1118
|
+
{"_neo_id":153,
|
1119
|
+
"direction":"outgoing",
|
1120
|
+
"other_node":
|
1121
|
+
{"_classname":"BirdiesBackend::User", "_neo_id":27, "twid":"spara"},
|
1122
|
+
"rel_type":"_all"},
|
1123
|
+
{"_neo_id":151,
|
1124
|
+
"direction":"outgoing",
|
1125
|
+
"other_node":
|
1126
|
+
{"_classname":"BirdiesBackend::Tweet",
|
1127
|
+
"_neo_id":24,
|
1128
|
+
"date":1306443119,
|
1129
|
+
"link":"http://twitter.com/leifwickland/statuses/73853910804213761",
|
1130
|
+
"short":" has a directed graph model, bu",
|
1131
|
+
"text":
|
1132
|
+
"#Neo4j has a directed graph model, but you can traverse the graph from destination to source, vice versa, or both. #gluecon",
|
1133
|
+
"tweet_id":"73853910804213761"},
|
1134
|
+
"rel_type":"_all"},
|
1135
|
+
{"_neo_id":149,
|
1136
|
+
"direction":"outgoing",
|
1137
|
+
"other_node":
|
1138
|
+
{"_classname":"BirdiesBackend::Tweet",
|
1139
|
+
"_neo_id":25,
|
1140
|
+
"date":1306442613,
|
1141
|
+
"link":"http://twitter.com/leifwickland/statuses/73851789753061376",
|
1142
|
+
"short":" allows you to create arbitrary",
|
1143
|
+
"text":
|
1144
|
+
"#Neo4j allows you to create arbitrary relationships between values in the graph. Allows you to do transactions; full ACID. #gluecon",
|
1145
|
+
"tweet_id":"73851789753061376"},
|
1146
|
+
"rel_type":"_all"},
|
1147
|
+
{"_neo_id":147,
|
1148
|
+
"direction":"outgoing",
|
1149
|
+
"other_node":
|
1150
|
+
{"_classname":"BirdiesBackend::Tweet",
|
1151
|
+
"_neo_id":22,
|
1152
|
+
"date":1306443425,
|
1153
|
+
"link":"http://twitter.com/noveltysystems/statuses/73855197448904704",
|
1154
|
+
"short":"RT : has a directed graph mode",
|
1155
|
+
"text":
|
1156
|
+
"RT @leifwickland: #Neo4j has a directed graph model, but you can traverse the graph from destination to source, vice versa, or both. #gluecon",
|
1157
|
+
"tweet_id":"73855197448904704"},
|
1158
|
+
"rel_type":"_all"},
|
1159
|
+
{"_neo_id":145,
|
1160
|
+
"direction":"outgoing",
|
1161
|
+
"other_node":
|
1162
|
+
{"_classname":"BirdiesBackend::User",
|
1163
|
+
"_neo_id":23,
|
1164
|
+
"twid":"noveltysystems"},
|
1165
|
+
"rel_type":"_all"},
|
1166
|
+
{"_neo_id":143,
|
1167
|
+
"direction":"outgoing",
|
1168
|
+
"other_node":
|
1169
|
+
{"_classname":"BirdiesBackend::User",
|
1170
|
+
"_neo_id":20,
|
1171
|
+
"twid":"leifwickland"},
|
1172
|
+
"rel_type":"_all"},
|
1173
|
+
{"_neo_id":141,
|
1174
|
+
"direction":"outgoing",
|
1175
|
+
"other_node":
|
1176
|
+
{"_classname":"BirdiesBackend::User",
|
1177
|
+
"_neo_id":21,
|
1178
|
+
"twid":"emileifrem"},
|
1179
|
+
"rel_type":"_all"},
|
1180
|
+
{"_neo_id":139,
|
1181
|
+
"direction":"outgoing",
|
1182
|
+
"other_node":
|
1183
|
+
{"_classname":"BirdiesBackend::User", "_neo_id":18, "twid":"woodardj"},
|
1184
|
+
"rel_type":"_all"},
|
1185
|
+
{"_neo_id":137,
|
1186
|
+
"direction":"outgoing",
|
1187
|
+
"other_node":
|
1188
|
+
{"_classname":"BirdiesBackend::Tweet",
|
1189
|
+
"_neo_id":19,
|
1190
|
+
"date":1306443842,
|
1191
|
+
"link":"http://twitter.com/leifwickland/statuses/73856945894850560",
|
1192
|
+
"short":""Unfortunately I don't hav",
|
1193
|
+
"text":
|
1194
|
+
""Unfortunately I don't have time to talk about my competitors, so I'm going to skip this slide." @emileifrem #neo4j #gluecon",
|
1195
|
+
"tweet_id":"73856945894850560"},
|
1196
|
+
"rel_type":"_all"},
|
1197
|
+
{"_neo_id":135,
|
1198
|
+
"direction":"outgoing",
|
1199
|
+
"other_node":
|
1200
|
+
{"_classname":"BirdiesBackend::User", "_neo_id":16, "twid":"jfp"},
|
1201
|
+
"rel_type":"_all"},
|
1202
|
+
{"_neo_id":133,
|
1203
|
+
"direction":"outgoing",
|
1204
|
+
"other_node":
|
1205
|
+
{"_classname":"BirdiesBackend::Tweet",
|
1206
|
+
"_neo_id":17,
|
1207
|
+
"date":1306443927,
|
1208
|
+
"link":"http://twitter.com/angilly/statuses/73857302997909504",
|
1209
|
+
"short":" he just did! ",
|
1210
|
+
"text":"@woodardj he just did! #neo4j #gluecon",
|
1211
|
+
"tweet_id":"73857302997909504"},
|
1212
|
+
"rel_type":"_all"},
|
1213
|
+
{"_neo_id":131,
|
1214
|
+
"direction":"outgoing",
|
1215
|
+
"other_node":
|
1216
|
+
{"_classname":"BirdiesBackend::User",
|
1217
|
+
"_neo_id":15,
|
1218
|
+
"twid":"jonam_biz"},
|
1219
|
+
"rel_type":"_all"},
|
1220
|
+
{"_neo_id":129,
|
1221
|
+
"direction":"outgoing",
|
1222
|
+
"other_node":
|
1223
|
+
{"_classname":"BirdiesBackend::Tweet",
|
1224
|
+
"_neo_id":14,
|
1225
|
+
"date":1306444074,
|
1226
|
+
"link":"http://twitter.com/jonam_biz/statuses/73857916628770816",
|
1227
|
+
"short":"RT : NoSQL is for applications ",
|
1228
|
+
"text":
|
1229
|
+
"RT @JFP: NoSQL is for applications that are out of the zone of "sql adequacy" #gluecon #neo4j",
|
1230
|
+
"tweet_id":"73857916628770816"},
|
1231
|
+
"rel_type":"_all"},
|
1232
|
+
{"_neo_id":127,
|
1233
|
+
"direction":"outgoing",
|
1234
|
+
"other_node":
|
1235
|
+
{"_classname":"BirdiesBackend::Tag",
|
1236
|
+
"_neo_id":13,
|
1237
|
+
"name":"bestnewphrase"},
|
1238
|
+
"rel_type":"_all"},
|
1239
|
+
{"_neo_id":125,
|
1240
|
+
"direction":"outgoing",
|
1241
|
+
"other_node":
|
1242
|
+
{"_classname":"BirdiesBackend::Tag", "_neo_id":12, "name":"gluecon"},
|
1243
|
+
"rel_type":"_all"},
|
1244
|
+
{"_neo_id":123,
|
1245
|
+
"direction":"outgoing",
|
1246
|
+
"other_node":
|
1247
|
+
{"_classname":"BirdiesBackend::Tag", "_neo_id":11, "name":"neo4j"},
|
1248
|
+
"rel_type":"_all"},
|
1249
|
+
{"_neo_id":121,
|
1250
|
+
"direction":"outgoing",
|
1251
|
+
"other_node":
|
1252
|
+
{"_classname":"BirdiesBackend::User", "_neo_id":10, "twid":"angilly"},
|
1253
|
+
"rel_type":"_all"},
|
1254
|
+
{"_neo_id":119,
|
1255
|
+
"direction":"outgoing",
|
1256
|
+
"other_node":
|
1257
|
+
{"_classname":"BirdiesBackend::User",
|
1258
|
+
"_neo_id":9,
|
1259
|
+
"twid":"kevinmarks"},
|
1260
|
+
"rel_type":"_all"},
|
1261
|
+
{"_neo_id":117,
|
1262
|
+
"direction":"outgoing",
|
1263
|
+
"other_node":{"_classname":"BirdiesBackend::Tweeters", "_neo_id":8},
|
1264
|
+
"rel_type":"_all"},
|
1265
|
+
{"_neo_id":115,
|
1266
|
+
"direction":"outgoing",
|
1267
|
+
"other_node":
|
1268
|
+
{"_classname":"BirdiesBackend::Tweet",
|
1269
|
+
"_neo_id":7,
|
1270
|
+
"date":1306446889,
|
1271
|
+
"link":"http://twitter.com/kevinmarks/statuses/73869723485478913",
|
1272
|
+
"short":"RT : "the zone of SQL adeq",
|
1273
|
+
"text":
|
1274
|
+
"RT @angilly: "the zone of SQL adequacy" #neo4j #Gluecon #bestNewPhrase",
|
1275
|
+
"tweet_id":"73869723485478913"},
|
1276
|
+
"rel_type":"_all"},
|
1277
|
+
{"_neo_id":0,
|
1278
|
+
"direction":"incoming",
|
1279
|
+
"other_node":
|
1280
|
+
{"_neo_id":0,
|
1281
|
+
"gemFile":
|
1282
|
+
"source :rubygems\ngem 'jruby-openssl'\ngem 'neo4j' #, :path : '/home/andreas/projects/neo4j'\ngem 'birdies-backend', :git : 'git://github.com/andreasronge/birdies-backend.git' #:path : '/home/andreas/projects/birdies-backend'\n"},
|
1283
|
+
"rel_type":"Neo4j::Rails::Model"}]
|
1284
|
+
|
1285
|
+
}
|
1286
|
+
|
1287
|
+
|