この例では、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" }
}
]
}
}