2016-03-28 9 views
2

Ich versuche zu lernen und die GAS-API zu verwenden, um einen Random Walk über meine Datenbank zu implementieren, jeden besuchten Scheitelpunkt mit dem Startscheitelpunkt zu verknüpfen.GAS-API Implementierung und Verwendung

Ich habe einige Probleme zu verstehen, wie ich es schaffen kann; Ich habe die PFADE-, BFS-, PR- und andere GAS-Klassen als Beispiele besprochen, aber ich bin mir nicht sicher, wie ich anfangen soll.

Ich denke, dass meine Implementierung BaseGASProgram erweitern und die erforderlichen Methoden implementieren sollte. Auch iterativ enthält die Grenze alle Scheitelpunkte der aktuellen Iteration. Das Konzept Vorgänger ist mir auch klar.

Aber ich glaube nicht, dass ich sehr gut die Gather, Apply, Scatter Philosophie verstehe und wie man den Random Walk über diese drei Konzepte verteilt.

Auch, sobald ich meinen Code implementieren, wie nenne ich es? Wie rufe ich die bereits implementierten Algorithmen (PR, SSSP, BFS, etc.) in meinem Code auf? Sollte ich ein SSSP Objekt instanziieren und was dann? Oder GASContext? GASRunnerBase?

Antwort

1

am TestBFS Klasse Werfen Sie einen Blick in das bigdata-Gas-Paket:

final IGASEngine gasEngine = getGraphFixture() 
     .newGASEngine(1/* nthreads */); 

try { 

    final SailConnection cxn = getGraphFixture().getSail() 
      .getConnection(); 

    try { 

     final IGraphAccessor graphAccessor = getGraphFixture() 
       .newGraphAccessor(cxn); 

     final IGASContext<BFS.VS, BFS.ES, Void> gasContext = gasEngine 
       .newGASContext(graphAccessor, new BFS()); 

     final IGASState<BFS.VS, BFS.ES, Void> gasState = gasContext 
       .getGASState(); 

     // Initialize the froniter. 
     gasState.setFrontier(gasContext, p.getMike()); 

     // Converge. 
     gasContext.call(); 

[snip] 

, es zu benutzen außerhalb des Testfalls Kontext, benötigen Sie einen SailConnection irgendeiner Art zu erstellen. Beispiele finden Sie in den blazegraph-samples GitHub-Projekt. Dann müssen Sie eine SAILGASEngine erstellen. Dies sollte Sie in Bezug auf den Aufruf der GASEngine direkt auf der Java-Ebene starten.

+0

Dank Brad, ich habe gerade diese Klassen überprüft; Ich werde es ausprobieren und Sie wissen lassen. Als ich es (irgendwie) herausgefunden habe, markiere ich deine Antwort. Vielen Dank! – antorqs

+0

Hallo Brad, tut mir leid dich zu stören. Ich habe es geschafft, das TestBFS-Programm mit der lokalen Beispieldatei auszuführen. Aber was ich wirklich versuche, ist, GAS-Programme (testet BFS) gegen meinen Blazegraph-Remote-Server laufen zu lassen. Ich bin bereits mit meinem Server verbunden und führe Abfragen (sowohl zum Auswählen als auch zum Einfügen) mit RemoteRepository durch. Aber, um die GAS API zu benutzen und GASProgramme auszuführen, muss ich noch eine SailConnection benutzen? oder ist es nur für die Arbeit mit "In-Memory" on-the-fly-geladenen RDF-Datensätzen? Nochmals vielen Dank für Ihre Hilfe. – antorqs

+0

@aquiros: Wenn diese Antwort etwas hilfreich für Sie ist, dann denken Sie bitte darüber nach, sie zu akzeptieren und/oder zu aktualisieren. Wenn Sie eine umfangreiche Folgefrage haben, dann stellen Sie bitte eine neue Frage. Wenn du in den Kommentaren viele Fragen stellst, wirst du vielleicht als Hilfe-Vampir wahrgenommen, der immer wieder Fragen stellt, aber keine Antworten akzeptiert oder upvotet. – honk

Verwandte Themen