1

使用して読み取ることができる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;
    }

しかし、これは非常に非効率的なアプローチであると確信しています..もっとエレガントで高速なものを提案してもらえますか? ありがとう!

4

1 に答える 1