我正在为ML8 Java API编写一些POC。 我在ML8中为我的数据库启用了三重索引,但我无法在Java API文档中找到任何文档。 因此,不确定如何从Java API使用这个三重索引,或者它是一个纯数据库设置的东西。 如果有人有,请分享一些信息..
答案 0 :(得分:3)
MarkLogic REST API附带两个端点/v1/graphs
和/v1/graphs/sparql
,它们实现了SPARQL协议。
将后者用于针对REST服务器的SPARQL和SPARQL更新查询。我在Jena和Sesame时成功编写了Java应用程序,并且他们使用这些端点开箱即用。
这些例子基本上都来自Jena和Sesame文件。这两个项目都有优秀的文档。
对于Sesame,请使用SPARQLRepository。
Repository rep = new SPARQLRepository(ENDPOINT);
rep.initialize();
RepositoryConnection conn = rep.getConnection();
String queryString = "SELECT ?x ?y WHERE { ?x ?p ?y } ";
TupleQuery tupleQuery = conn.prepareTupleQuery(
QueryLanguage.SPARQL, queryString);
TupleQueryResult result = tupleQuery.evaluate();
try {
while (result.hasNext()) { // iterate over the result
BindingSet bindingSet = result.next();
Value valueOfX = bindingSet.getValue("x");
Value valueOfY = bindingSet.getValue("y");
System.out.println(valueOfX);
System.out.println(valueOfY);
}
} finally {
result.close();
}
在耶拿,使用以下内容:
String ENDPOINT = "http://localhost:8007/v1/graphs";
HttpAuthenticator authenticator = new SimpleAuthenticator("admin",
"admin".toCharArray());
// make a model by parsing a file
Model model = ModelFactory.createDefaultModel();
String turtle = "src/main/resources/data/one.ttl";
model.read(turtle, null);
// configure access to graph protocol
DatasetGraphAccessor markLogicClient = new DatasetGraphAccessorHTTP(
ENDPOINT, authenticator);
DatasetAdapter datasetAdapter = new DatasetAdapter(markLogicClient);
// add a graph to MarkLogic
datasetAdapter.add(model);
String query = "select ?s ?p ?o where { ?s ?p ?o } limit 1";
QueryExecution queryExec = QueryExecutionFactory
.sparqlService(URI, query, authenticator);
ResultSet results = queryExec.execSelect();
logger.debug("Success. Result: " + results.toString());
for (; results.hasNext();) {
QuerySolution soln = results.nextSolution();
Iterator<String> i = soln.varNames();
for (; i.hasNext();) {
String n = i.next();
logger.debug("Name: " + n + " Val: "
+ soln.get(n).toString());
}
答案 1 :(得分:0)
据我所知,Java API并没有为XQuery提供太多支持:&#39; sem:&#39;在功能组中,您必须使用/编写扩展(如果有的话)来添加所需的功能。我在一年前提出过关于加载RDF数据的类似问题,我认为这与你的问题有点相关:
MarkLogic sem: function group in MarkLogic Java API
有许多变通办法&#39;您可以在上面的链接中看到,例如REST API调用和mlcp用于加载。
答案 2 :(得分:0)
使用Java调用XQuery or JavaScript program which calls the sem:
API。您可以通过extending the high-level Java API使用模块调用或use XCC module invocation directly执行此操作。如果扩展Java API,您可以考虑将您的工作开源以供其他人使用。