SPARQL 照会の発行
RDF ストアに保管されたデータは照会することができます。
例
次のプログラムは、SPARQL 照会言語を使用して RDF ストア内のデータを照会する方法を示しています。
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import com.hp.hpl.jena.query.Dataset;
import com.hp.hpl.jena.query.Query;
import com.hp.hpl.jena.query.QueryExecution;
import com.hp.hpl.jena.query.QuerySolution;
import com.hp.hpl.jena.query.ResultSet;
import com.hp.hpl.jena.rdf.model.Model;
import com.ibm.rdf.store.Store;
import com.ibm.rdf.store.StoreManager;
import com.ibm.rdf.store.exception.RdfStoreException;
import com.ibm.rdf.store.jena.RdfStoreFactory;
import com.ibm.rdf.store.jena.RdfStoreQueryExecutionFactory;
import com.ibm.rdf.store.jena.RdfStoreQueryFactory;
public class RDFStoreSampleQuery {
public static void main(String[] args) throws SQLException, IOException {
Connection conn = null;
Store store = null;
String storeName = "sample";
String schema = "db2admin";
// Get a connection to the Db2 database.
try {
Class.forName("com.ibm.db2.jcc.DB2Driver");
conn = DriverManager.getConnection(
"jdbc:db2://localhost:50000/dbrdf", "db2admin",
"db2admin");
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
try {
/* Connect to required RDF store in the specified schema. */
store = StoreManager.connectStore(conn, schema, storeName);
/* This is going to be our SPARQL query i.e. select triples
in the default graph where object is <ibm.com>
*/
String query = "SELECT * WHERE { ?s ?p
<https://www.ibm.com> }";
/* Create the Query object for the SPARQL string. */
Query q = RdfStoreQueryFactory.create(query);
/* Get the Dataset interface of the RDF store. */
Dataset ds = RdfStoreFactory.connectDataset(store, conn);
/* Create a QueryExecution object, by providing the query to execute
and the dataset against which it to be executed. */
QueryExecution qe = RdfStoreQueryExecutionFactory.create(q, ds);
long rows = 0;
Model m = null;
/* Based on the SPARQL query type, call the proper execution
method. */
if (q.isSelectType()) {
ResultSet rs = qe.execSelect();
while (rs.hasNext()) {
QuerySolution qs = rs.next();
System.out.println(qs);
System.out.println();
rows++;
}
}
else if ( q.isDescribeType() ) {
m = qe.execDescribe();
m.write(System.out, "N-TRIPLE");
}
else if ( q.isAskType() ) {
System.out.println(qe.execAsk());
}
else if (q.isConstructType()) {
m = qe.execConstruct();
m.write(System.out, "N-TRIPLE");
}
/* Close the QueryExecution object. This is required to ensure
no JDBC statement leaks. */
qe.close();
// Display the # of rows returned
if ( m != null ) {
System.out.println("Number of Rows : " + m.size());
m.close();
}
else {
System.out.println("Number of Rows : " + rows);
}
}
catch(RdfStoreException e) {
e.printStackTrace();
}
catch(Exception e) {
e.printStackTrace();
}
}
}