0
何の接頭辞を持っていないSPARQLクエリ内のURIと接頭辞付きの名前に置き換えます。私は次のクエリのように見えるサービスからSPARQLクエリ文字列を取得
SELECT * FROM { ?s owl:sameAs ?p }
私は私が手QueryFactory
クラスでこれを解析しようとした場合完全に意味をなすのはUnresolved Prefixed Name Exception
です。
私はpredefined namespace prefixesをマッピングするプロパティファイルを持っています。今の
私は次のような回避策があります
Iterator<String> it = prefixConfig.getKeys();
String prefixes = "";
while(it.hasNext()) {
String p = it.next();
prefixes += "PREFIX " + p + ":<" + prefixConfig.getString(p) + "> ";
}
Query q = QueryFactory.create(prefixes + query);
it = prefixConfig.getKeys();
while(it.hasNext()) {
String p = it.next();
q.getPrefixMapping().removeNsPrefix(p);
}
query = q.toString();
これは動作しますが、私はこのソリューションでは全く満足していないので、私の質問は次のとおりです。
ありますSPARQLクエリ文字列内のプレフィックスを置き換えるか、関連するプレフィックスだけを追加するのが良い方法ですか?
ありがとうございます!
:)私の作品でクエリを行います解析しないで、setPrefixMapping()メソッドを持つQueryを返します。これにより、プレフィックスを設定したあとでクエリ文字列を解析することができます。 –
まあ、私はどちらかのプレフィックスのクエリ文字列を解析し、必要なプレフィックスを追加するか、すべてのプレフィックスを追加して単純に同じを行う必要があります:/ しかし、私は今のところ、方法。私が言ったように – TortugaAttack
、私はそれが答えを提供するかどうかは分かりません。しかし、プレフィックスマッピングを構築することはできません。そして、jenaがあなたのために正しい種類の文字列に変換するようにしてください。手作業で作成する際に起こりうるエラーを取り除きます –