我們正在開發一個使用Marklogic作爲實體的文檔存儲的應用程序。我們正計劃使用語義建立實體之間的關係。使用java api在marklogic中創建三元組
例如:公司是一個實體,「ABC公司」是公司實體的一個實例。同樣,卡車是一個實體,「沃爾沃101」是卡車實體的一個實例。
我們打算通過在用戶在UI中創建業務實體實例時創建三元組來定義這些關係。
但是我們在使用GraphManager.merge()時遇到了問題,因爲每次主體,謂詞和對象相同時,此方法都會爲圖添加新的三元組。現有的三元組沒有被覆蓋。
我們也嘗試了write/writeAs方法,仍然看到相同的行爲。
我們還查看了Marklogic提供的sesame和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));
}