この例では、JohnがMaryを愛していること(デフォルト・グラフに含まれています)と、各fatherOf関係で主語と目的語を選択し表示することを指定します(JSON出力として)。RDFグラフ機能のExample4b.javaでは、同じ練習に名前付きグラフを使用する場合を説明します。
import com.hp.hpl.jena.graph.*; import com.hp.hpl.jena.query.*; import com.hp.hpl.jena.rdf.model.Model; import oracle.rdf.kv.client.jena.*; public class Example4 { public static void main(String[] args) throws Exception { String szStoreName = args[0]; String szHostName = args[1]; String szHostPort = args[2]; System.out.println("Create Oracle NoSQL connection"); OracleNoSqlConnection conn = OracleNoSqlConnection.createInstance(szStoreName, szHostName, szHostPort); System.out.println("Create Oracle NoSQL model"); Model model = OracleModelNoSql.createOracleDefaultModelNoSql(conn); System.out.println("Clear model"); model.removeAll(); System.out.println("Add triples"); model.getGraph().add( Triple.create(Node.createURI("http://example.com/John"), Node.createURI("http://example.com/loves"), Node.createURI("http://example.com/Mary"))); String queryString = " select ?person1 ?person2 " + " where " + " { ?person1 <http://example.com/loves> ?person2 }"; System.out.println("Execute query " + queryString); Query query = QueryFactory.create(queryString); QueryExecution qexec = QueryExecutionFactory.create(query, model); try { ResultSet results = qexec.execSelect(); ResultSetFormatter.outputAsJSON(System.out, results); } finally { qexec.close(); } model.close(); conn.dispose(); } }
この例をコンパイルして実行するコマンドと、想定されるJavaコマンドの出力は次のとおりです。
javac -classpath ./:./jena-core-2.7.4.jar:./jena-arq-2.9.4.jar: \ ./sdordfnosqlclient.jar:./kvclient.jar:./xercesImpl-2.10.0.jar: \ ./slf4j-api-1.6.4.jar:./slf4j-log4j12-1.6.4.jar:./log4j/1.2.16.jar: \ ./jena-iri-0.9.4.jar:./xml-apis-1.4.01.jar Example4.java javac -classpath ./:./jena-core-2.7.4.jar:./jena-arq-2.9.4.jar: \ ./sdordfnosqlclient.jar:./kvclient.jar:./xercesImpl-2.10.0.jar: \ ./slf4j-api-1.6.4.jar:./slf4j-log4j12-1.6.4.jar:./log4j/1.2.16.jar: \ ./jena-iri-0.9.4.jar:./xml-apis-1.4.01.jar Example4b <store_name> \ <host_name> <host_port> Execute query select ?person1 ?person2 where { ?person1 <http://example.com/loves> ?person2 } { "head": { "vars": [ "person1" , "person2" ] } , "results": { "bindings": [ { "person1": { "type": "uri" , "value": "http://example.com/John" } , "person2": { "type": "uri" , "value": "http://example.com/Mary" } } ] } }