【发布时间】:2016-09-29 17:23:13
【问题描述】:
我们正在开发一个使用 Marklogic 作为实体文档存储的应用程序。我们计划使用语义建立实体之间的关系。
例如:Company 是一个实体,而“ABC Corporation”是 Company 实体的一个实例。同样,Truck 是一个实体,而“Volvo 101”是 Truck 实体的一个实例。
当用户在 UI 中创建业务实体的实例时,我们打算通过创建如下三元组来定义这些关系。
但是,当我们使用 GraphManager.merge() 时,我们会遇到问题,因为每次当主语、谓语和宾语相同时,此方法都会向图中添加新的三元组。现有的三元组不会被覆盖。
我们也尝试了 write/writeAs 方法,但仍然看到相同的行为。
我们还查看了 Marklogic 提供的 sesame 和 jena api,但找不到好的文档。如果我们打算进行大量语义操作并动态构建三元组,那么哪个 API 更适合用于语义? Marklogic-java-api 还是 sesame 还是 jena?
代码sn-p:
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));
}
【问题讨论】:
标签: marklogic