标签: IRI

  • 读取IRI的Graph存入特定Graph – Virtuoso Jena Provider

    该例读取下面三个IRI的内容,并返回RDF数据。这个例子比较有意思的是能够在
    数据库里面创建一个Graph。
    IRI:
    http://kidehen.idehen.net/dataspace/person/kidehen#this
    http://www.w3.org/People/Berners-Lee/card#i
    http://demo.openlinksw.com/dataspace/person/demo#this

    
    import org.apache.jena.query.Query;
    import org.apache.jena.query.QueryFactory;
    import org.apache.jena.query.QuerySolution;
    import org.apache.jena.query.ResultSet;
    import org.apache.jena.rdf.model.RDFNode;
    
    import virtuoso.jena.driver.*;
    
    public class VirtuosoSPARQLExample2 {
    
    	/**
    	 * Executes a SPARQL query against a virtuoso url and prints results.
    	 */
    	public static void main(String[] args) {
    
    		String url;
    		if(args.length == 0)
    		    url = "jdbc:virtuoso://localhost:1111";
    		else
    		    url = args[0];
    
    /*			STEP 1			*/
    		/*
    		 * 这里添加"Example2"后,类似于打开一个Graph叫做"Example2",,
    		 * 如果没有会自动生成一个名为"Example2"的图
    		 */
    		VirtGraph graph = new VirtGraph ("Example2", url, "dba", "dba");
    
    /*			STEP 2			*/
    /*		Load data to Virtuoso		*/
    		//清除"Example2" Graph
    		graph.clear ();
    		
    		/*
    		 * 这里是读取IRI的Graph并存储到服务器的"Example2"
    		 * 这里的读取,类似于在Web端在Quad Store Upload上的操作类似
    		 * 如果网络连接不了,可以尝试删除下面的那些失败的内容
    		 */
    		System.out.print ("Begin read from 'http://www.w3.org/People/Berners-Lee/card#i'  ");
    		graph.read("http://www.w3.org/People/Berners-Lee/card#i", "RDF/XML");
    		System.out.println ("\t\t\t Done.");
    
    		System.out.print ("Begin read from 'http://demo.openlinksw.com/dataspace/person/demo#this'  ");
    		graph.read("http://demo.openlinksw.com/dataspace/person/demo#this", "RDF/XML");
    		System.out.println ("\t Done.");
    
    		System.out.print ("Begin read from 'http://kidehen.idehen.net/dataspace/person/kidehen#this'  ");
    		graph.read("http://kidehen.idehen.net/dataspace/person/kidehen#this", "RDF/XML");
    		System.out.println ("\t Done.");
    
    
    /*			STEP 3			*/
    /*		Select only from VirtGraph	*/
    		Query sparql = QueryFactory.create("SELECT ?s ?p ?o WHERE { ?s ?p ?o }");
    
    /*			STEP 4			*/
    		VirtuosoQueryExecution vqe = VirtuosoQueryExecutionFactory.create (sparql, graph);
    
    		ResultSet results = vqe.execSelect();
    		while (results.hasNext()) {
    			QuerySolution result = results.nextSolution();
    		    RDFNode graph_name = result.get("graph");
    		    RDFNode s = result.get("s");
    		    RDFNode p = result.get("p");
    		    RDFNode o = result.get("o");
    		    System.out.println(graph_name + " { " + s + " " + p + " " + o + " . }");
    		}
    
    		System.out.println("graph.getCount() = " + graph.getCount());
    	}
    }