Skip to content

Instantly share code, notes, and snippets.

@okram
Created February 6, 2013 17:11
Show Gist options
  • Save okram/4724104 to your computer and use it in GitHub Desktop.
Save okram/4724104 to your computer and use it in GitHub Desktop.
@ExtensionNaming(namespace = "core", name = "getPathTagCloud")
class GetPathTagCloudExtension extends AbstractRexsterExtension {
static {
Gremlin.load();
}
@ExtensionDefinition(extensionPoint = ExtensionPoint.GRAPH, method = HttpMethod.POST)
@ExtensionDescriptor(description = "Generate a keyword distribution of a path")
public ExtensionResponse evaluate(@RexsterContext RexsterResourceContext context,
@RexsterContext Graph g) {
try {
final JSONObject request = context.getRequestObject();
Vertex source = g.V('uri',request.getString('source_uri')).next()
Vertex target = g.V('uri',request.getString('target_uri')).next()
int maxTraversals = request.has(Tokens.MAX_TRAVERSALS) ? request.getInt(Tokens.MAX_TRAVERSALS) : 500;
final String keywordProperty = request.getString(Tokens.KEYWORD_PROPERTY);
def m = [:];
def c = 0;
source.out(Tokens.AUTHORED).in(Tokens.AUTHORED).loop(2) { c++ < maxTraversals & it.object != target }.has('id', target.getId()).simplePath.path { null } {
it.out(Tokens.KEYWORD).property(keywordProperty).groupCount(m).iterate()
}.next(15)
JSONObject result = new JSONObject();
result.put(Tokens.TAG_CLOUD, m);
return ExtensionResponse.ok(result);
} catch (Exception e) {
return ExtensionResponse.error(e.getMessage(), e);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment