エンティティのドキュメントストアとしてMarklogicを使用しているアプリケーションを開発しています。セマンティクスを使用してエンティティ間の関係を確立する予定です。Java APIを使用してmarklogicでトリプルを作成
例:会社はエンティティであり、「ABC Corporation」は会社エンティティのインスタンスです。同様に、トラックはエンティティであり、「Volvo 101」はトラックエンティティのインスタンスです。
ユーザーがUIでビジネスエンティティのインスタンスを作成するときに、次のようにトリプルを作成してこれらの関係を定義します。
しかし、私たちがGraphManager.merge()を使うときは、このメソッドはsubject、predicate、objectが同じであるたびにグラフに新しいトリプルを追加するので問題に直面しています。既存のトリプルは上書きされません。
また、write/writeAsメソッドを試しても、同じ動作が表示されます。
また、Marklogicによって提供されたゴマとjena apiを見ましたが、適切なドキュメントが見つかりませんでした。セマンティクスの操作をたくさん行い、トリプルを動的に構築しようとしているのであれば、セマンティクスに使うのにもっと良いAPIですか? Marklogic-java-apiまたはゴマまたはjena?
コードスニペット:
String subjectURI = "http://example.org/entityinstance/ABCCorporation";
String predicateURI = "http://example.org/relation/instanceof";
String objectURI = "http://example.org/entity/company";
String graphURI = "http://example.org/graph/Relation";
public void createTriple(String subjectURI, String predicateURI,
String objectURI, String graphURI)
{
DatabaseClient client = markLogicConnectionHelper.getMLConnection();
String tripleStore = "<" + subjectURI + ">" + " " + " <" + predicateURI
+ ">" + " " + "<" + objectURI + ">" + ".";
GraphManager graphManager = client.newGraphManager();
graphManager.setDefaultMimetype(RDFMimeTypes.NTRIPLES);
graphManager.merge(graphURI, new StringHandle(tripleStore));
}