I am starting with titan and i am really loosing in it. I created my own graph databse model with tables(Vertices) and relations(Edge). Well, now I want to create my DB, but I cannot find any good tutorial. How to build scripts? Do you have same example how to create own verticles and edges?
Thx.
If you are new to graphs and new to Titan, start here:
http://s3.thinkaurelius.com/docs/titan/0.5.4/getting-started.html
If you don't follow that then recognize that Titan implements the Blueprints interfaces (i.e. TinkerPop) and thus is accessible via the Gremlin graph traversal language:
https://github.com/tinkerpop/gremlin/wiki/Getting-Started
There are plenty of resources available that explain how these things work. Consider looking at GremlinDocs as well as Sql2Gremlin as well.
Related
I'm trying to use Apache Flink's Table concept in one of my projects to combine data from multiple sources in real-time. Unfortunately, all of my team members are Node.JS developers. So, I'm looking for possible ways to connect to Flink from NodeJS and query from it. In Flink's documentation for SQL Client, it's mentioned that
The SQL Client aims to provide an easy way of writing, debugging, and submitting table programs to a Flink cluster without a single line of Java or Scala code. The SQL Client CLI allows for retrieving and visualizing real-time results from the running distributed application on the command line.
Based on this, is there any way to connect to Flink's SQL client from NodeJS? Is there any driver already available for this like Node.JS drivers for MySQL or MSSQL. Otherwise, what are the possible ways of achieving this?
Any idea or clarity on achieving this would be greatly helpful and much appreciated.
There's currently not much that you can do. The SQL Client runs on local machines and connects to the cluster there. I think what will help you is the introduction of the Flink SQL Gateway, which is expected to be released with Flink 1.16. You can read more about that on https://cwiki.apache.org/confluence/display/FLINK/FLIP-91%3A+Support+SQL+Gateway
Another alternative is to check out some of the products that offer a FlinkSQL editor on the market, maybe that is useful path for your colleagues.
For example:
https://www.ververica.com/apache-flink-sql-on-ververica-platform
https://docs.cloudera.com/csa/1.7.0/ssb-overview/topics/csa-ssb-intro.html
Note that this is not exactly what you asked for, but could be an option to enable your team.
I'm getting started with graph databases. I want to migrate a social networking application from sql to Janus Graph database. I plan to build the application using Python Django framework.
I also plan to scale the application using using IBM's ComposeForJanusGraph in the future.
Problems I face:
1) I'm following the tinkerpop documentation for gremlin_python and I face several issues with the syntax because I couldn't find any good documentation. Only documentation I found here is also very short and not that helpful of how to do a CRUD. (For example how to create a new database, how to configure the search or storage database, how to create a node, how to create an edge, how to query for a vertex with a specific edge is not documented well clearly. None of them works when I try myself.)
2) Is there anything I should know before I learn and build it?
I couldn't find any good documentation. Only documentation I found here is also very short and not that helpful
Gremlin is Gremlin is Gremlin. It doesn't matter if it's Python or Java or C# or Javascript - it's all just Gremlin. Therefore, the documentation for Gremlin using Python is "short" because it simply shows how you initiate your GraphTraversalSource that allows you to spawn Traversal instances. From there, you have access to all the standard steps that Gremlin offers:
http://tinkerpop.apache.org/docs/current/reference/#graph-traversal-steps
and therefore the remainder of the documentation basically applies to your needs. The main bit of trickery to consider is that some step names conflict with Python reserved words - in those case, the step is post-fixed with a underscore and thus, the in() step for Java becomes in_() in Python.
For example how to create a new database, how to configure the search or storage database,
You won't find this in TinkerPop documentation really. How you create/configure a TinkerPop Graph implementation is specific to the graph database that you choose. You typically won't do that in Python. You will resort to the approach provided by your graph. If your graph is JanusGraph on IBM Compose, you should consult their documentation. You will only connect to that graph once established with gremlin-python.
how to create a node, how to create an edge,
It's just Gremlin. Gremlin has steps for mutating a Graph so to add a vertex and and to add an edge so to create two vertices and an edge between them I can string together a single traversal that does that:
g.addV('person').property('name','cegprakash').as('c').
addV('question').property('title','Using gremlin-python Janus for social networking application').as('q1').
addV('question').property('title','Working of CCD algorithm for Inverse Kinematics').as('q2').
addE('asks').property('votes',0).from('c').to('q1').
addE('asks').property('votes',1).from('c').to('q2').iterate()
how to query for a vertex with a specific edge is not documented well clearly.
Again, it's just Gremlin and there are plenty of examples.
g.V().has('person','name', 'cegprakash').
out('asks').
has('votes',gt(0))
So the above, says to find a vertex with the name "cegprakash", then traverse all the outgoing edges labelled "ask" with a "vote" property that has values greater than zero.
Is there anything I should know before I learn and build it?
If you haven't worked with graphs before, just start simple. Use TinkerGraph and the Gremlin Console to get familiar with the Gremlin language and then start looking into how JanusGraph is configured and operated under Compose. At that point you'll have a good basis for digging into how your application will actually work and if necessary asking more specific questions.
I would like to use Titan 0.9.0-M2 for a feature that it offers over 0.5.4 but I am using Frames heavily and it looks like the TitanGraph class no longer implements the Tinkerpop Graph class. Without this, you cannot make a FramedGraph from a TitanGraph nor can you use MigrateGraph.
Any suggestions? Is there a reason why a Graph Database framework built on TinkerPop is no longer implementing their classes? Is there any support for using the basic Frames API with Titan or has Titan implemented some support for this elsewhere?
Figured it out. Looks like the Titan 0.9.0-M2 API is implementing the TinkerPop3 classes. The namespace has changed to org.apache.tinkerpop and there is currently not mention of Frames, only Gremlin in the 3.0.0-incubating release. Looks like I'm gonna have to make due with 0.5.4.
I'm looking to utilise the speed of Exasolution with the mapping capabilities of ArcGIS.
Exasolution is an extremely fast database. It has spatial support, but I'd like to be able to render spatial features inside a map. So it could be via some kind of API from Esri, or maybe a third party mapping engine and use WMS/WFS etc.
Anyone had any joy with these products?
Cheers
You will likely have some joy with EXASolution's JDBC driver - EXASolution's Geospatial libraries are built on OpenGIS using the libGEOS libraries, so everything you can do with Postgres should be possible on EXASolution.
I did an introductory Geospatial-on-EXASOL video a while back which may be of interest https://www.youtube.com/watch?v=f6Erp1WWLHw
I would say that your question would get a better response in EXASOL's community section where EXASOL customers and techies can answer specific EXASOL questions. Go to exasol.com/community for more details.
Good luck - and do let me know how you get on
Graham Mossman
Solution Engineer
EXASOL A.G.
I just finished a short knowledge base article which shows you how to connect to ESRI's ArcGIS from within an EXASolution database:
https://www.exasol.com/support/browse/SOL-211
The approach is different from what Graham suggested, as it uses Esri's REST API in combination with Python scripts called from SQL. So, the database connects directly and in parallel to the REST API service, not involving the client at all when it comes to data enrichment.
Hope that helps,
Franz
I've created a neo4j graph using Java, and it's sitting in an embedded database. What I want to do is write a web page which accepts user input, creates the graph using Java, and then returns the result to the web page, where it is traversed and displayed in a chart fashion.
I'm not sure where to start with this in terms of framework and how to query from root to all nodes in the graph. I was thinking of using play-framework.
What should I be looking for in terms of documentation to work out querying the graph using play, for example?
Thanks!
You also can use Spring Data Neo4j, probably the most convenient and most stable Java solutoin right now, see http://www.springsource.org/spring-data/neo4j