使用して読み取ることができるRDFファイルがあります
Model model = ModelFactory.createDefaultModel();
// use the FileManager to find the input file
InputStream in = FileManager.get().open(args[0]);
if (in == null) {
throw new IllegalArgumentException(
"File: " + args[0] + " not found");
}
// read the RDF/XML file
model.read(in, null);
また、モデルの作成に使用されるオントロジーの記述を含む OWL ファイルもあります。私の質問は、RDF モデルを正しく操作するために、このファイルを読む必要がありますか (どのように?) ですか?
明確にするために、例を挙げます。あるリソースが他のリソースと何らかの関係を持っているかどうかを知る必要があります (たとえばStation1 has predicate "isResponsibleFor" Workorder1
)。イエナでこれを行うにはどうすればよいですか?
のようなものを使用しようとするとresource.hasProperty(ResourceFactory.createProperty("isResponsibleFor"))
、false が返されます (ただし、プロパティは存在します!)。
おそらく、このトピックに関する高度なチュートリアルを教えてもらえますか? Papache サイトなどで多くのチュートリアルを見つけましたが、探している情報が得られません。質問が明確でない場合は申し訳ありませんが、私はイエナを初めて使用します
編集:現在、モデルにこれを使用して特定のステートメントが含まれているかどうかを検索しています:
public static boolean containsStatement(Model model, String sub,
String pred, String obj) {
// list the statements in the Model
StmtIterator iter = model.listStatements();
// print out the predicate, subject and object of each statement
while (iter.hasNext()) {
Statement stmt = iter.nextStatement(); // get next statement
Resource subject = stmt.getSubject(); // get the subject
Property predicate = stmt.getPredicate(); // get the predicate
RDFNode object = stmt.getObject(); // get the object
if (subject.toString().contains(sub)
&& predicate.toString().contains(pred)
&& object.toString().contains(obj)) {
return true;
}
}
return false;
}
しかし、これは非常に非効率的なアプローチであると確信しています..もっとエレガントで高速なものを提案してもらえますか? ありがとう!