ファイルを Jena モデルで解析したら、次のような方法で反復およびフィルタリングできます。
//Property to filter the model
Property geoProperty =
model. createProperty("http://www.w3.org/2003/01/geo/wgs84_pos#",
"geometry");
//Iterator based on a Simple selector
StmtIterator iter =
model.listStatements(new SimpleSelector(null, geoProperty, (RDFNode)null));
//Loop to traverse the statements that match the SimpleSelector
while (iter.hasNext()) {
Statement stmt = iter.nextStatement();
System.out.print(stmt.getSubject().toString());
System.out.print(stmt.getPredicate().toString());
System.out.println(stmt.getObject().toString());
}
を使用SimpleSelector
すると、任意の (主語、述語、目的語) パターンを渡して、モデル内のステートメントに一致させることができます。あなたの場合、特定の述語のみを気にする場合、コンストラクターの最初と3番目のパラメーターはnullです。
2 つの異なるプロパティのフィルタリングを許可する
より複雑なフィルタリングを可能にするために、次のようにインターフェイスにselects
メソッドを
実装できます。SimpleSelector
Property geoProperty = /* like before */;
Property countryLargestCityProperty =
model. createProperty("http://dbpedia.org/property/",
"countryLargestCity");
SimpleSelector selector = new SimpleSelector(null, null, (RDFNode)null) {
public boolean selects(Statement s)
{ return s.getPredicate().equals(geoProperty) ||
s.getPredicate().equals(countryLargestCityProperty) ;}
}
StmtIterator iter = model.listStatements(selector);
while(it.hasNext()) {
/* same as in the previous example */
}
編集:完全な例を含む
このコードには、私にとって有効な完全な例が含まれています。
import com.hp.hpl.jena.util.FileManager;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.SimpleSelector;
import com.hp.hpl.jena.rdf.model.Property;
import com.hp.hpl.jena.rdf.model.RDFNode;
import com.hp.hpl.jena.rdf.model.Literal;
import com.hp.hpl.jena.rdf.model.StmtIterator;
import com.hp.hpl.jena.rdf.model.Statement;
public class TestJena {
public static void main(String[] args) {
FileManager fManager = FileManager.get();
fManager.addLocatorURL();
Model model = fManager.loadModel("http://dbpedia.org/data/Ireland.rdf");
Property geoProperty =
model. createProperty("http://www.w3.org/2003/01/geo/wgs84_pos#",
"geometry");
StmtIterator iter =
model.listStatements(new SimpleSelector(null, geoProperty,(RDFNode) null));
//Loop to traverse the statements that match the SimpleSelector
while (iter.hasNext()) {
Statement stmt = iter.nextStatement();
if (stmt.getObject().isLiteral()) {
Literal obj = (Literal) stmt.getObject();
System.out.println("The geometry predicate value is " +
obj.getString());
}
}
}
}
この完全な例は次のように出力されます。
The geometry predicate value is POINT(-7 53)
リンクトデータに関する注意事項
http://dbpedia.org/page/Ireland
リソースの HTML ドキュメント バージョンです。http://dbpedia.org/resource/Ireland
RDF を取得するには、以下を解決する必要があります。
http://dbpedia.org/data/Ireland.rdf
また
http://dbpedia.org/resource/Ireland
+ Accept: application/rdfxml
HTTP ヘッダー。curl
それは次のようになります:
curl -L -H 'Accept: application/rdf+xml' http://dbpedia.org/resource/Ireland