Titan 0.5.0-M1

1,381 views
Skip to first unread message

Matthias Broecheler

unread,
Jun 16, 2014, 4:36:29 AM6/16/14
to aureliu...@googlegroups.com
Hey guys,

it is my pleasure to release the first milestone release for Titan 0.5. This one has been brewing for a while and I want to say a big thank you to the team and all contributors for the hard work they put into it.

Here are is the download and its also available in maven central as "0.5.0-M1":

The goal of the 0.5.0 line is to be nearly feature-complete (wrt to Titan 1.0) and backwards compatible from this point on. In other words, after the 0.5.x line, the only major change to Titan 1.0 is the support for TP3 (in fact, some TP3 features are already supported like vertex labels).
That puts a lot of pressure on the 0.5 line and is the reason for milestone releases prior to the GA so we can gather feedback. The goal is to release 0.5 GA by end of July.

The new features include:
- Separation of the schema definition from index creation
- The Titan Management API: Used to define the schema, create indexes, configure consistency and manage the graph configuration. Have a look at the GraphOfheGodsFactory to see how it is used:
While not yet supported, this will allow index updates in future milestone releases
- Global configuration options can now be stored in the graph which makes managing of Titan clusters much easier, see:
- Multiple vertex centric indexes per label are supported and those can be restricted to just one direction
- Composite indexes are supported, eg
mgmt.buildIndex("time+name",Vertex.class).indexKey(time).indexKey(name).buildInternalIndex();
creates a composite index on time and name through the mgmt API.
- Creation of multiple external indexes (eg in elasticsearch) are supported and the field names can be controlled. This provides better interoperability with external indexing systems, eg
mgmt.buildIndex("ext1",Vertex.class).indexKey(time,Parameter.of("mapped-name","time")).buildExternalIndex();
- Vertex Labels can be defined:
mgmt.makeVertexLabel("person").make()
and used when adding vertices to give them a type
g.addVertex("person")
- Index definitions can be restricted to vertices of just a particular label. eg to index only people by name:
mgmt.buildIndex("name",Vertex.class).indexKey(name).indexOnly(person).buildInternalIndex();
- New edge label multiplicity SIMPLE to enforce only one edge between any pair of vertices.
- New cardinality constraint SET for property keys allows multiple properties per key but only one per value.

More features of the 0.5 line will be announced over the coming days like vertex partitioning, so stay tuned.

Unfortunately, the documentation is not yet up to date. We are also revamping the documentation system which can be found here:
However, it is incomplete and in a state of flux. We will update those pages over the coming days. For now, also use the javadocs:
We look forward to your feedback and will post more features soon,
Matthias

--
Matthias Broecheler
http://www.matthiasb.com

孙伟

unread,
Jun 16, 2014, 7:02:51 AM6/16/14
to aureliu...@googlegroups.com
It is great,Thans for your works

if there is a case document that is great

在 2014年6月16日星期一UTC+8下午4时36分29秒,Matthias写道:

Marko Rodriguez

unread,
Jun 16, 2014, 10:51:25 AM6/16/14
to aureliu...@googlegroups.com
Hi everyone,

I want to add one note here. In Titan 0.5.0-M1 you will see Titan/Hadoop. This is "Faunus." Faunus has been merged with Titan. We did this for the following reasons:

1. One less name to think about -- "What is Faunus?" -- Titan/Hadoop is more obvious.
2. One less package to keep in sync as now titan/ is a single distribution.
3. We removed support for TinkerPop Graph in general where now Titan/Hadoop only works with Titan.
4. Titan will be leveraging Hadoop more for schema maintenance and updates and thus, the Titan-team needs more control over Faunus.

With that, note that we are not promoting Titan/Hadoop in 0.5.0-M1 as there is still a lot of integration work that needs to happen. By Titan 0.5.0-M2 you will see Titan/Hadoop1 and Titan/Hadoop2 and will be able to work with those features -- as for now, there is no way to Hadoop bulk load data into Titan M1.

In the future, as we move towards Titan 1.0, Titan/Hadoop will provide Titan with:
1. Schema updates, bulk index mutations, bulk data loading and mutations, etc.
2. An implementation of TinkerPop3 graph computer (classic Faunus use case -- e.g. g.V.age.groupCount).

Thank you for reading,
Marko.
--
You received this message because you are subscribed to the Google Groups "Aurelius" group.
To unsubscribe from this group and stop receiving emails from it, send an email to aureliusgraph...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Yuriy

unread,
Jun 16, 2014, 12:28:29 PM6/16/14
to aureliu...@googlegroups.com
Thank you, Marko.
Any ETA on when M2 is going to be available?

Adolfo Rodriguez

unread,
Jun 18, 2014, 9:53:58 PM6/18/14
to aureliu...@googlegroups.com
Chrome says this: "titan-0.5.0-M1-hadoop2.zip is not commonly downloaded and could be dangerous."

No comments,

Marko Rodriguez

unread,
Jun 18, 2014, 9:56:24 PM6/18/14
to aureliu...@googlegroups.com

Ha. I dare you to unzip it.

Marko.

http://markorodriguez.com

On Jun 18, 2014 7:54 PM, "'Adolfo Rodriguez' via Aurelius" <aureliu...@googlegroups.com> wrote:
Chrome says this: "titan-0.5.0-M1-hadoop2.zip is not commonly downloaded and could be dangerous."

No comments,

--

Adolfo Rodriguez

unread,
Jun 18, 2014, 10:48:33 PM6/18/14
to aureliu...@googlegroups.com
I know Marko,.... :-)

I have a TitanDB 4.2 running with Cassandra, no Faunus at the moment. What I will be looking for in next releases is improving my performance (tuning). I have seen cassandra 2.0.7 packaged within the distribution so this is what I was expecting. But also I see the distribution is tagged as titan-0.5.0-M1-hadoop2.zip. Will be Hadoop required at any point, when not using Faunus, to have the equivalent to TitanDB-cassandra 4.2? Apparently Hadoop only applies to (previous) Faunus, is that correct? I am trying to understand the effort required to upgrade my current system. It would be good a enumeration of what products (configurations) are packaged in this large zip, I guess.

Thanks 
(was just annoyed about the NWO message: not commonly -xxxxed = dangerous.)

Daniel Kuppitz

unread,
Jun 18, 2014, 10:56:54 PM6/18/14
to aureliu...@googlegroups.com
Hi Adolfo,

I am trying to understand the effort required to upgrade my current system

I've upgraded a project from 0.4.2 to 0.5.0-M1. All I had to do was:
  • update the code that creates type definitions
  • make some minor modifications in my properties file (storage.index.* is now index.*)
More wasn't needed to get everything up and running again. If you haven't used Faunus before, then there's also no need to install Hadoop in order to use Titan 0.5.0-M1. The most important thing is: Titan 0.5.0-M1 is not compatible with data from previous versions, thus you have to recreate any existing graph.

Cheers,
Daniel




--

Adolfo Rodriguez

unread,
Jun 18, 2014, 11:14:44 PM6/18/14
to aureliu...@googlegroups.com
Great Daniel, as expected. ;-) About this Marko's comment above "3. We removed support for TinkerPop Graph in general where now Titan/Hadoop only works with Titan." only applies to (ex-)Faunus, is not it? So previous GremlinPipelines are supposed to be working as before (with minor changes, e.g. toList() -> toStream()), I suppose. I still see gremlin, pipes and blueprints in the zip.....

Stephen Mallette

unread,
Jun 19, 2014, 5:18:35 PM6/19/14
to aureliu...@googlegroups.com
yes, the removal of support for "TinkerPop Graph" applied to Faunus and technically just meant that you can't run Titan/Hadoop over Rexster.  Titan still fully supports TinkerPop Blueprints Graph interfaces, so your existing GremlinPipelines should be good to go.


On Wed, Jun 18, 2014 at 11:14 PM, 'Adolfo Rodriguez' via Aurelius <aureliu...@googlegroups.com> wrote:
Great Daniel, as expected. ;-) About this Marko's comment above "3. We removed support for TinkerPop Graph in general where now Titan/Hadoop only works with Titan." only applies to (ex-)Faunus, is not it? So previous GremlinPipelines are supposed to be working as before (with minor changes, e.g. toList() -> toStream()), I suppose. I still see gremlin, pipes and blueprints in the zip.....

--

Dave Sessa

unread,
Jun 20, 2014, 3:21:41 PM6/20/14
to aureliu...@googlegroups.com
Hi Guys,

First of all, thanks for the great work on the 0.5 milestone release.  The schema management changes are likely to save me a lot of headaches in the future.

Along those lines, is there an API that I'm missing which will tell me what properties and labels are currently existing in the graph?  It would be good for me to know if a property already exists before trying to create it again!

Thanks for your help!
Dave

Adolfo Rodriguez

unread,
Jun 20, 2014, 3:43:53 PM6/20/14
to aureliu...@googlegroups.com
Along those lines, is there an API that I'm missing which will tell me what properties and labels are currently existing in the graph?  It would be good for me to know if a property already exists before trying to create it again!

 I was using for Titan 0.4.2 if (getDatabase().getType(PROPERTY_CLASS) == null) {.....} where getDatabase() returns an instance of TitanGraph. I have seen for Titan 0.5.0 M1 API getRelationType(String) but not sure if is is just a rename of the method of there is more conceptual change implied. I am also interested in this question.

(Thanks Stephen by the way)

Matthias Broecheler

unread,
Jun 20, 2014, 3:55:51 PM6/20/14
to aureliu...@googlegroups.com
In a TitanTransaction you can do:
public boolean containsRelationType(String name);

which also exists in TitanManagement, which has this method in addition:
    public <T extends RelationType> Iterable<T> getRelationTypes(Class<T> clazz);

see the javadoc for more information. Good luck



--
You received this message because you are subscribed to the Google Groups "Aurelius" group.
To unsubscribe from this group and stop receiving emails from it, send an email to aureliusgraph...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

manish kumar

unread,
Jun 21, 2014, 4:58:35 AM6/21/14
to aureliu...@googlegroups.com
Will it be good to move on with Titan0.5.0-M1 in production?

Daniel Kuppitz

unread,
Jun 21, 2014, 10:24:15 AM6/21/14
to aureliu...@googlegroups.com
I wouldn't recommend to do so. We'll probably see a lot more changes during the next few weeks until we get to the final release of 0.5.0. Try it out and become familiar with all the API changes, but don't use it in a production environment.

Cheers,
Daniel



2014-06-21 10:58 GMT+02:00 manish kumar <mkj.o...@gmail.com>:
Will it be good to move on with Titan0.5.0-M1 in production?

--

Yuriy

unread,
Jul 2, 2014, 7:15:13 PM7/2/14
to aureliu...@googlegroups.com
I believe that makeLabel was replaced by makeEdgeLabel.

Try this -
In gremlin REPL create your graph g = ...
Then type g. TAB and you'll be offered to see all the methods on the g object and you'll be able to figure out the new supported methods.

On Wednesday, July 2, 2014 1:23:35 AM UTC-7, Melvin Yam wrote:
Hi,

I'm trying out Titan 0.5.0-M1. Need some help.

I see that TitanGraph .getType(), .makeKey() and .makeLabel() has been removed.
I can see that there are new methods .makePropertyKey( String name ).
Am I suppose to use this in place of .makeKey()?

Also in Titan 0.4 I can specify the index name to be "standard" or "elasticsearch",
and whether it is for vertex or edge, but I don't see it in PropertyKeyMaker.
How do I specify to use what index and for vertex or edge?

Lastly, how do I check if a key already exist? I was using .getType(), but I don't see any .getPropertyKey() method.

Thanks.

Regards,
Melvin Yam

Simon

unread,
Jul 14, 2014, 4:55:28 AM7/14/14
to aureliu...@googlegroups.com
Hi Daniel,

I'm trying to upgrade from 0.4.4 to 0.5.0-M1 and followed your instructions concerning the changes in the configuration.
But I can't get it work. Even the code from the GraphOfTheGodsFactory does not work.

I get the following exception:

Caused by: java.lang.IllegalArgumentException: Unknown configuration element in namespace [root.index]: local-mode
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:120)
at com.thinkaurelius.titan.diskstorage.configuration.ConfigElement.parse(ConfigElement.java:168)
at com.thinkaurelius.titan.diskstorage.configuration.UserModifiableConfiguration.set(UserModifiableConfiguration.java:80)
at com.thinkaurelius.titan.core.TitanFactory$Builder.set(TitanFactory.java:127)
at com.iqser.gin.server.persistence.titan.TitanGraphFactory.buildGraph(TitanGraphFactory.java:12)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:166)
... 43 more


Do you have any idea?

Daniel Kuppitz

unread,
Jul 14, 2014, 8:23:58 PM7/14/14
to aureliu...@googlegroups.com
Hi Simon,

I was able to reproduce an often reported problem with Titan 0.5.0-M1. I'm quite sure that the error you see is related. Please make sure that you use a valid ES version (1.x). ES 0.90.x will throw an exception (Could not instantiate implementation: com.thinkaurelius.titan.diskstorage.es.ElasticSearchIndex).

Cheers,
Daniel
Message has been deleted

Simon

unread,
Jul 17, 2014, 3:48:23 AM7/17/14
to aureliu...@googlegroups.com

Hi Daniel,


I'm using the Elasticsearch version which comes with Titan 0.5.0-M1 which is 1.0.1.


The exception is thrown when I execute


TitanFactory.Builder config = TitanFactory.build();
config.set("storage.backend","berkeleyje");
config.set("storage.directory",directory);
config.set("index."+INDEX_NAME+".backend","elasticsearch");
config.set("index."+INDEX_NAME+".local-mode",true);
config.set("index."+INDEX_NAME+".client-only",false);
config.set("index." + INDEX_NAME + ".directory", directory + File.separator + "es");
TitanGraph graph = config.open();


in the 5th line. The Builder does not know the property index.local-mode anymore.

Nick Beenham

unread,
Jul 17, 2014, 7:38:16 AM7/17/14
to aureliu...@googlegroups.com
I had this issue as well

Matthias Broecheler

unread,
Jul 21, 2014, 12:14:22 PM7/21/14
to aureliu...@googlegroups.com

Hi guys, this has been fixed in the m2 release. Thanks for pointing it out.

Jon Schneider

unread,
Aug 11, 2014, 10:00:00 PM8/11/14
to aureliu...@googlegroups.com
This release has a truly astonishing new feature set.  Keep up the great work, guys.

Jon 
Reply all
Reply to author
Forward
Message has been deleted
0 new messages