Skip to content

Instantly share code, notes, and snippets.

@bshambaugh
Created March 12, 2018 08:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bshambaugh/29143506f7cfac8adce4c612953f3726 to your computer and use it in GitHub Desktop.
Save bshambaugh/29143506f7cfac8adce4c612953f3726 to your computer and use it in GitHub Desktop.
This is the TinkerPop Test with added predicates
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;
import org.apache.jena.query.Dataset;
import org.apache.jena.query.DatasetFactory;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.Property;
import org.apache.jena.rdf.model.RDFNode;
import org.apache.jena.rdf.model.Resource;
import org.apache.jena.rdf.model.Statement;
import org.apache.jena.rdf.model.StmtIterator;
import org.apache.jena.riot.RDFDataMgr;
import org.apache.jena.riot.RDFFormat;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
import org.apache.tinkerpop.gremlin.structure.Edge;
import org.apache.tinkerpop.gremlin.structure.Graph;
import org.apache.tinkerpop.gremlin.structure.T;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.apache.tinkerpop.gremlin.structure.io.IoCore;
import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
public class GremlinJenaTest {
private static Dataset loadDataset(String path) throws IOException {
InputStream is = null;
Dataset dataset = null;
try {
is = GremlinJenaTest.class.getResourceAsStream(path);
dataset = DatasetFactory.create();
RDFDataMgr.read(dataset, is, RDFFormat.TRIG.getLang());
} finally {
if (is != null) {
is.close();
}
}
return dataset;
}
public static void main(String[] args) throws IOException {
Dataset input = loadDataset("/conversations/twoProposalsTwoAgreementsBothCancelled.trig");
//RDFDataMgr.write(System.out, input, Lang.TRIG);
Graph graph = TinkerGraph.open();
Iterator<String> modelNames = input.listNames();
while (modelNames.hasNext()) {
String modelName = modelNames.next();
// System.out.println("The model name is:"+modelName);
Model model = input.getNamedModel(modelName);
StmtIterator stmtIt = model.listStatements();
while(stmtIt.hasNext()) {
Statement stmt = stmtIt.next();
Resource subject = stmt.getSubject();
Vertex subjectVertex = getVertexForResource(graph, subject);
RDFNode object = stmt.getObject();
Property predicate = stmt.getPredicate();
if (object.isResource()) {
Vertex objectVertex = getVertexForResource(graph, object.asResource());
subjectVertex.addEdge(predicate.getURI(), objectVertex);
} else if (object.isLiteral()){
subjectVertex.property(predicate.getURI(), object.asLiteral().getValue());
}
}
}
System.out.println(graph);
// Brents custom code....
GraphTraversalSource g = graph.traversal();
//
List<Vertex> vertices = g.V().toList();
//
// System.out.println(vertices.size());
//
// for(Vertex hello : vertices) {
// System.out.println(hello);
// }
//
// List edges = g.E().toList();
// System.out.println(edges.size());
//
// for(Object hello : edges) {
// // System.out.println(hello);
// }
String vertexlabel = "https://localhost:8443/won/resource/event/r5hu2rq515sq6wzgdjov";
String vertexlabel2 = "https://localhost:8443/won/resource/event/d0muf1vbp6zai6jtnp7w";
// GraphTraversal<Vertex,Vertex> traversal = g.V(vertexlabel).out("http://purl.org/webofneeds/message#hasReceiver");
// //traversal.fold()
// while(traversal.hasNext()) {
// System.out.println(traversal.next());
//
// }
// for(Object foo : g.V(vertexlabel).outE().label().toList())
// System.out.println(foo);
//
// System.out.println("string");;
//
// for(Object foo : g.V(vertexlabel2).outE().label().toList())
// System.out.println(foo);
//
// for(Vertex foo : vertices ) {
// System.out.println("The vertex is:"+foo.id());
// for(Object bar : g.V(foo.id()).outE().label().toList()) {
// System.out.println("The edges are:"+bar);
// }
// System.out.println("\n");
// }
// http://purl.org/webofneeds/agreement#proposes
System.out.println("Here are the proposes"+"\n");
for(Vertex foo : vertices ) {
// System.out.println("The vertex is:"+foo.id());
// for(Object bar : g.V(foo.id()).outE().label().toList())
// System.out.println("The edges are:"+bar);
// I need to iterate through this list and see if the predicate is matched...
List<String> astring = g.V(foo.id()).outE().label().toList();
Iterator<String> iterator = astring.iterator();
while(iterator.hasNext()) {
// System.out.println(iterator.next());
String next = iterator.next();
if(next.equals("http://purl.org/webofneeds/agreement#proposes")) {
System.out.println("We have a winner!"+foo);
}
}
}
System.out.println("\n");
// http://purl.org/webofneeds/agreement#accepts
System.out.println("Here are the accepts"+"\n");
for(Vertex foo : vertices ) {
// System.out.println("The vertex is:"+foo.id());
// for(Object bar : g.V(foo.id()).outE().label().toList())
// System.out.println("The edges are:"+bar);
// I need to iterate through this list and see if the predicate is matched...
List<String> astring = g.V(foo.id()).outE().label().toList();
Iterator<String> iterator = astring.iterator();
while(iterator.hasNext()) {
// System.out.println(iterator.next());
String next = iterator.next();
if(next.equals("http://purl.org/webofneeds/agreement#accepts")) {
System.out.println("We have a winner!"+foo);
}
}
}
System.out.println("\n");
// http://purl.org/webofneeds/agreement#accepts
System.out.println("Here are the proposesToCancel"+"\n");
for(Vertex foo : vertices ) {
// System.out.println("The vertex is:"+foo.id());
// for(Object bar : g.V(foo.id()).outE().label().toList())
// System.out.println("The edges are:"+bar);
// I need to iterate through this list and see if the predicate is matched...
List<String> astring = g.V(foo.id()).outE().label().toList();
Iterator<String> iterator = astring.iterator();
while(iterator.hasNext()) {
// System.out.println(iterator.next());
String next = iterator.next();
if(next.equals("http://purl.org/webofneeds/agreement#proposesToCancel")) {
System.out.println("We have a winner!"+foo);
}
}
}
System.out.println("\n");
System.out.println("Here are the retracts"+"\n");
for(Vertex foo : vertices ) {
// System.out.println("The vertex is:"+foo.id());
// for(Object bar : g.V(foo.id()).outE().label().toList())
// System.out.println("The edges are:"+bar);
// I need to iterate through this list and see if the predicate is matched...
List<String> astring = g.V(foo.id()).outE().label().toList();
Iterator<String> iterator = astring.iterator();
while(iterator.hasNext()) {
// System.out.println(iterator.next());
String next = iterator.next();
if(next.equals("http://purl.org/webofneeds/modification#retracts")) {
System.out.println("We have a winner!"+foo);
}
}
}
System.out.println("\n");
System.out.println("Here are the hasPreviousMessage"+"\n");
for(Vertex foo : vertices ) {
// System.out.println("The vertex is:"+foo.id());
// for(Object bar : g.V(foo.id()).outE().label().toList())
// System.out.println("The edges are:"+bar);
// I need to iterate through this list and see if the predicate is matched...
List<String> astring = g.V(foo.id()).outE().label().toList();
Iterator<String> iterator = astring.iterator();
while(iterator.hasNext()) {
// System.out.println(iterator.next());
String next = iterator.next();
if(next.equals("http://purl.org/webofneeds/message#hasPreviousMessage")) {
System.out.println("We have a winner!"+foo);
}
}
}
System.out.println("\n");
System.out.println("Here are the hasPreviousMessage"+"\n");
for(Vertex foo : vertices ) {
// System.out.println("The vertex is:"+foo.id());
// for(Object bar : g.V(foo.id()).outE().label().toList())
// System.out.println("The edges are:"+bar);
// I need to iterate through this list and see if the predicate is matched...
List<String> astring = g.V(foo.id()).outE().label().toList();
Iterator<String> iterator = astring.iterator();
while(iterator.hasNext()) {
// System.out.println(iterator.next());
String next = iterator.next();
if(next.equals("http://purl.org/webofneeds/message#hasCorrespondingRemoteMessage")) {
System.out.println("We have a winner!"+foo);
}
}
}
System.out.println("\n");
System.out.println("Here are the isResponseTo"+"\n");
for(Vertex foo : vertices ) {
// System.out.println("The vertex is:"+foo.id());
// for(Object bar : g.V(foo.id()).outE().label().toList())
// System.out.println("The edges are:"+bar);
// I need to iterate through this list and see if the predicate is matched...
List<String> astring = g.V(foo.id()).outE().label().toList();
Iterator<String> iterator = astring.iterator();
while(iterator.hasNext()) {
// System.out.println(iterator.next());
String next = iterator.next();
if(next.equals("http://purl.org/webofneeds/message#isResponseTo")) {
System.out.println("We have a winner!"+foo);
}
}
}
System.out.println("\n");
//
// System.out.println(g.V(vertexlabel).aggregate("foobar"));
// Iterator<Edge> joe = g.getGraph().edges();
//
// while(joe.hasNext()) {
// System.out.println(joe.next());
// }
//
// Iterator<Vertex> tom = g.getGraph().vertices();
//
// while(tom.hasNext()) {
// System.out.println(tom.next());
// }
//
// System.out.println(g.V("Kevin"));
//for(receiver : )) {
// System.out.println(receiver);
//};
// System.out.println(g.V().values(vertexlabel));
// System.out.println(g.V().values("bunny"));
}
private static Vertex getVertexForResource(Graph graph, Resource subject) {
String vertexId = subject.getURI();
System.out.println("making vertex for node " + subject.getURI());
if (vertexId == null) {
vertexId = subject.asNode().getBlankNodeLabel();
}
Iterator<Vertex> it = graph.vertices(vertexId);
Vertex subjectVertex = null;
if (it.hasNext()) {
subjectVertex = it.next();
} else {
subjectVertex = graph.addVertex(T.id, vertexId);
}
return subjectVertex;
}
}
@bshambaugh
Copy link
Author

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.jena.query.Dataset;
import org.apache.jena.query.DatasetFactory;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.Property;
import org.apache.jena.rdf.model.RDFNode;
import org.apache.jena.rdf.model.Resource;
import org.apache.jena.rdf.model.Statement;
import org.apache.jena.rdf.model.StmtIterator;
import org.apache.jena.riot.RDFDataMgr;
import org.apache.jena.riot.RDFFormat;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
import org.apache.tinkerpop.gremlin.structure.Graph;
import org.apache.tinkerpop.gremlin.structure.T;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;

public class GremlinJenaTest {
private static Dataset loadDataset(String path) throws IOException {

	InputStream is = null;
	Dataset dataset = null;
	try {
		is = GremlinJenaTest.class.getResourceAsStream(path);
		dataset = DatasetFactory.create();
		RDFDataMgr.read(dataset, is, RDFFormat.TRIG.getLang());
	} finally {
		if (is != null) {
			is.close();
		}
	}

	return dataset;
}

public static void main(String[] args) throws IOException {
	Dataset input = loadDataset("/conversations/twoProposalsTwoAgreementsBothCancelled.trig");	
	//RDFDataMgr.write(System.out, input, Lang.TRIG);

	Graph graph = TinkerGraph.open();
	
	Iterator<String> modelNames = input.listNames();
	while (modelNames.hasNext()) {
		String modelName = modelNames.next();
	//	System.out.println("The model name is:"+modelName);
		Model model = input.getNamedModel(modelName);
		StmtIterator stmtIt = model.listStatements();
		while(stmtIt.hasNext()) {
			Statement stmt = stmtIt.next();
			
			Resource subject = stmt.getSubject();
			Vertex subjectVertex = getVertexForResource(graph, subject);
			RDFNode object = stmt.getObject();
			Property predicate = stmt.getPredicate();
			if (object.isResource()) {
				Vertex objectVertex = getVertexForResource(graph, object.asResource());
				subjectVertex.addEdge(predicate.getURI(), objectVertex);
			} else if (object.isLiteral()){
				subjectVertex.property(predicate.getURI(), object.asLiteral().getValue());
			}
			
		}
	}
	
  	System.out.println(graph);
  	
  	// Brents custom code....
	
  	GraphTraversalSource g = graph.traversal();

//
List vertices = g.V().toList();
//
// System.out.println(vertices.size());
//
// for(Vertex hello : vertices) {
// System.out.println(hello);
// }
//
// List edges = g.E().toList();
// System.out.println(edges.size());
//
// for(Object hello : edges) {
// // System.out.println(hello);
// }

    String vertexlabel = "https://localhost:8443/won/resource/event/r5hu2rq515sq6wzgdjov";
    
    String vertexlabel2 = "https://localhost:8443/won/resource/event/d0muf1vbp6zai6jtnp7w";

// GraphTraversal<Vertex,Vertex> traversal = g.V(vertexlabel).out("http://purl.org/webofneeds/message#hasReceiver");
// //traversal.fold()
// while(traversal.hasNext()) {
// System.out.println(traversal.next());
//
// }

// for(Object foo : g.V(vertexlabel).outE().label().toList())
// System.out.println(foo);
//
// System.out.println("string");;
//
// for(Object foo : g.V(vertexlabel2).outE().label().toList())
// System.out.println(foo);
//
// for(Vertex foo : vertices ) {
// System.out.println("The vertex is:"+foo.id());
// for(Object bar : g.V(foo.id()).outE().label().toList()) {
// System.out.println("The edges are:"+bar);
// }
// System.out.println("\n");
// }

 // http://purl.org/webofneeds/agreement#proposes 
    
    System.out.println("Here are the proposes"+"\n");
    
    for(Vertex foo : vertices ) {
    	// System.out.println("The vertex is:"+foo.id());
    //	for(Object bar : g.V(foo.id()).outE().label().toList())
    //    	    System.out.println("The edges are:"+bar);
    	     // I need to iterate through this list and see if the predicate is matched...
    	    List<String> astring = g.V(foo.id()).outE().label().toList();
    	    Iterator<String> iterator = astring.iterator();
    	    while(iterator.hasNext()) {
    	    	//  System.out.println(iterator.next());
    	    	  String next = iterator.next();
    	    	  if(next.equals("http://purl.org/webofneeds/agreement#proposes")) {
    	    		  System.out.println("We have a winner!"+foo);
    	    	  }
    	    	}
    }
    
    System.out.println("\n");

// http://purl.org/webofneeds/agreement#accepts

    System.out.println("Here are the accepts"+"\n");
    
    for(Vertex foo : vertices ) {
    	// System.out.println("The vertex is:"+foo.id());
    //	for(Object bar : g.V(foo.id()).outE().label().toList())
    //    	    System.out.println("The edges are:"+bar);
    	     // I need to iterate through this list and see if the predicate is matched...
    	    List<String> astring = g.V(foo.id()).outE().label().toList();
    	    Iterator<String> iterator = astring.iterator();
    	    while(iterator.hasNext()) {
    	    	//  System.out.println(iterator.next());
    	    	  String next = iterator.next();
    	    	  if(next.equals("http://purl.org/webofneeds/agreement#accepts")) {
    	    		  System.out.println("We have a winner!"+foo);
    	    	  }
    	    	}
    }
    
    System.out.println("\n");

// http://purl.org/webofneeds/agreement#accepts

    System.out.println("Here are the proposesToCancel"+"\n");
    
    for(Vertex foo : vertices ) {
    	// System.out.println("The vertex is:"+foo.id());
    //	for(Object bar : g.V(foo.id()).outE().label().toList())
    //    	    System.out.println("The edges are:"+bar);
    	     // I need to iterate through this list and see if the predicate is matched...
    	    List<String> astring = g.V(foo.id()).outE().label().toList();
    	    Iterator<String> iterator = astring.iterator();
    	    while(iterator.hasNext()) {
    	    	//  System.out.println(iterator.next());
    	    	  String next = iterator.next();
    	    	  if(next.equals("http://purl.org/webofneeds/agreement#proposesToCancel")) {
    	    		  System.out.println("We have a winner!"+foo);
    	    	  }
    	    	}
    }
    
    System.out.println("\n");
    
    
    System.out.println("Here are the retracts"+"\n");
    
    for(Vertex foo : vertices ) {
    	// System.out.println("The vertex is:"+foo.id());
    //	for(Object bar : g.V(foo.id()).outE().label().toList())
    //    	    System.out.println("The edges are:"+bar);
    	     // I need to iterate through this list and see if the predicate is matched...
    	    List<String> astring = g.V(foo.id()).outE().label().toList();
    	    Iterator<String> iterator = astring.iterator();
    	    while(iterator.hasNext()) {
    	    	//  System.out.println(iterator.next());
    	    	  String next = iterator.next();
    	    	  if(next.equals("http://purl.org/webofneeds/modification#retracts")) {
    	    		  System.out.println("We have a winner!"+foo);
    	    	  }
    	    	}
    }
    
    System.out.println("\n");
    
    
    System.out.println("Here are the hasPreviousMessage"+"\n");
    
    for(Vertex foo : vertices ) {
    	// System.out.println("The vertex is:"+foo.id());
    //	for(Object bar : g.V(foo.id()).outE().label().toList())
    //    	    System.out.println("The edges are:"+bar);
    	     // I need to iterate through this list and see if the predicate is matched...
    	    List<String> astring = g.V(foo.id()).outE().label().toList();
    	    Iterator<String> iterator = astring.iterator();
    	    while(iterator.hasNext()) {
    	    	//  System.out.println(iterator.next());
    	    	  String next = iterator.next();
    	    	  if(next.equals("http://purl.org/webofneeds/message#hasPreviousMessage")) {
    	    		  System.out.println("We have a winner!"+foo);
    	    	  }
    	    	}
    }
    
    System.out.println("\n");
    
    
    System.out.println("Here are the hasPreviousMessage"+"\n");
    
    for(Vertex foo : vertices ) {
    	// System.out.println("The vertex is:"+foo.id());
    //	for(Object bar : g.V(foo.id()).outE().label().toList())
    //    	    System.out.println("The edges are:"+bar);
    	     // I need to iterate through this list and see if the predicate is matched...
    	    List<String> astring = g.V(foo.id()).outE().label().toList();
    	    Iterator<String> iterator = astring.iterator();
    	    while(iterator.hasNext()) {
    	    	//  System.out.println(iterator.next());
    	    	  String next = iterator.next();
    	    	  if(next.equals("http://purl.org/webofneeds/message#hasCorrespondingRemoteMessage")) {
    	    		  System.out.println("We have a winner!"+foo);
    	    	  }
    	    	}
    }
    
    System.out.println("\n");
    
    
    System.out.println("Here are the isResponseTo"+"\n");
    
    for(Vertex foo : vertices ) {
    	// System.out.println("The vertex is:"+foo.id());
    //	for(Object bar : g.V(foo.id()).outE().label().toList())
    //    	    System.out.println("The edges are:"+bar);
    	     // I need to iterate through this list and see if the predicate is matched...
    	    List<String> astring = g.V(foo.id()).outE().label().toList();
    	    Iterator<String> iterator = astring.iterator();
    	    while(iterator.hasNext()) {
    	    	//  System.out.println(iterator.next());
    	    	  String next = iterator.next();
    	    	  if(next.equals("http://purl.org/webofneeds/message#isResponseTo")) {
    	    		  System.out.println("We have a winner!"+foo);
    	    	  }
    	    	}
    }
    
    System.out.println("\n");
    
    List<Vertex> first = new ArrayList<Vertex>();
    List<Vertex> second = new ArrayList<Vertex>();
    
    g.V()
    	.inE("http://purl.org/webofneeds/message#isResponseTo")
    	.outV().sideEffect(consumer -> first.add(consumer.get()))
    	.outE("http://purl.org/webofneeds/message#hasCorrespondingRemoteMessage").outV().sideEffect(consumer -> second.add(consumer.get())).toStream().forEach(x -> System.out.println(x));

    System.out.println("first: " + first);
    System.out.println("second: " + second);

//
// System.out.println(g.V(vertexlabel).aggregate("foobar"));
// Iterator joe = g.getGraph().edges();
//
// while(joe.hasNext()) {
// System.out.println(joe.next());
// }
//
// Iterator tom = g.getGraph().vertices();
//
// while(tom.hasNext()) {
// System.out.println(tom.next());
// }
//
// System.out.println(g.V("Kevin"));
//for(receiver : )) {
// System.out.println(receiver);
//};

// System.out.println(g.V().values(vertexlabel));
// System.out.println(g.V().values("bunny"));

}

private static Vertex getVertexForResource(Graph graph, Resource subject) {
	String vertexId = subject.getURI();
	System.out.println("making vertex for node " + subject.getURI());
	if (vertexId == null) {
		vertexId = subject.asNode().getBlankNodeLabel();
	}
	Iterator<Vertex> it = graph.vertices(vertexId);
	Vertex subjectVertex = null;
	if (it.hasNext()) {
		subjectVertex = it.next();
	} else {
		subjectVertex = graph.addVertex(T.id, vertexId);
	}
	return subjectVertex;
}

}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment