Метка вершины с заданным именем не существует

Я пытаюсь выполнить следующий код:

public class Friendster {

/**
 * @param args
 * @throws FileNotFoundException 
 */


public static void load(final TitanGraph graph,String filePath) throws FileNotFoundException {
    Scanner sc = new Scanner(new File(filePath));
    System.out.println("Inside Load Function");


    for (int i =0 ; sc.hasNext();i++)
    {
         TitanTransaction tx = graph.newTransaction();
        String friendLine = sc.nextLine();

        String friendList[]= friendLine.split(":");
        if(friendList.length==1)
        {
            continue;
        }
        else if(friendList[1].equals("notfound"))
        {
            String human="human";
            tx.addVertex(T.label, human, "Name", "Not Found","No of Friends",0);

            // tx.commit();
        }
        else if(friendList[1].equals("private"))
        {
            String human="human";
            tx.addVertex(T.label, human, "Name", ""+friendList[0],"No of Freinds", "Private");
            System.out.println("Node Added : "+ friendList[0]);

            // tx.commit();
        }
        else
        {
            String human="human";
            int friends_count=friendList[1].split(",").length;

            tx.addVertex(T.label, human, "Name", ""+friendList[0],"No of Friends",friends_count);
            System.out.println("Node Added : "+ friendList[0]);
            String totalList[]=friendList[1].split(",");

            for(int j=0;j<totalList.length;j++)
            {
                 Iterator<Vertex> itr2=graph.traversal().V().has("Name", ""+totalList[j]);
                  if(!itr2.hasNext())
                  {
                      tx.addVertex(T.label, human, "Name", ""+totalList[j],"No of Friends",999);
                      System.out.println("Node Added : "+ totalList[j]);

                      //     tx.commit();
                  }
            }
        }
        tx.commit();

    }




       }

public static void main(String[] args) throws FileNotFoundException {
    // TODO Auto-generated method stub


     TitanGraph g = TitanFactory.open("titan-cassandra.properties");


       //LOADING FROM FILE   
    load(g,"/media/laxmikant/New Volume/friends.txt");


      g.close();

}

}

Этот код дает ошибку как:

Exception in thread "main" java.lang.IllegalArgumentException: Vertex Label with given name does not exist: human
at com.thinkaurelius.titan.graphdb.types.typemaker.DisableDefaultSchemaMaker.makeVertexLabel(DisableDefaultSchemaMaker.java:37)
at com.thinkaurelius.titan.graphdb.transaction.StandardTitanTx.getOrCreateVertexLabel(StandardTitanTx.java:988)
at com.thinkaurelius.titan.graphdb.tinkerpop.TitanBlueprintsTransaction.addVertex(TitanBlueprintsTransaction.java:101)
at Friendster.load(Friendster.java:79)
at Friendster.main(Friendster.java:133)

Раньше он выполнялся правильно, вдруг он начал выдавать ошибку.

Если мы запускаем отдельные запросы в оболочке гремлина, это не дает ошибки, но в java-коде выдает ошибку. Почему это так?

В чем проблема с этим кодом здесь?


person Amnesiac    schedule 02.02.2016    source источник


Ответы (2)


Проблема в том, что вы установили schema.default=none в файле titan-cassandra.properties, поэтому автоматическое создание схемы отключено. Когда автоматическое создание схемы отключено, вам необходимо определить схему (включая все метки, свойства и индексы вершин и ребер), прежде чем вы сможете их использовать.

См. главу 5. Схема и моделирование данных в документацию Titan для получения подробной информации о том, как определить схему.

person Jason Plurad    schedule 04.02.2016
comment
Спасибо за решение. Это сработало. Не могли бы вы немного помочь мне с этой проблемой, stackoverflow.com/questions/35187601/ . - person Amnesiac; 04.02.2016

Когда вы устанавливаете storage.batch-loading как true, автоматическое создание схемы также отключается, и вам нужно явно установить схему.

lazy val graph = TitanFactory.build()
  .set("storage.backend", storage_backend)
  .set("storage.hostname", "127.0.0.1")
  .set("storage.cassandra.keyspace", "titan_graph_test")
  .set("storage.batch-loading", "true") //this removes the consitency lock ,which don't work well with NSQL backends
  .open()
 mgmt.makePropertyKey(TIME).dataType(classOf[String]).cardinality(Cardinality.SET).make()
 mgmt.makeEdgeLabel("interference").make()

Обратите внимание, что в настоящее время с TitanGraph с этими настройками существует ошибка, которая не позволяет создать вершину с меткой -- https://groups.google.com/d/msg/aureliusgraphs/lFW1buC1Hms/tBV_hUUoAAAJ

Но вы можете создать вершину без метки и добавить определенные выше свойства.

person Alex Punnen    schedule 13.10.2016