我已经在MongoDB上开发了Dataset
的实现,在SDB实现之后进行了模式化。 Dataset
是未命名的(默认)Graph
加上0或更多可选的名为Graph
的基础数据载体。 Graph
接口声明Iterator<Triple> find()
的重要方法变体,这些变体通过追踪MongoDB集合中的数据在我的代码中具体实现:
JenaMongoConnection mc = new JenaMongoConnection("mongodb://localhost:27017");
JenaMongoStore ms = new JenaMongoStore(mc, "semantic");
Dataset ds = JenaMongoDataset.create(ms, "semtest1");
最初的实验产生了一个Dataset
,但是我没有得到那些非常理想的RDFS推理逻辑。这很可能是因为实际上没有RDFS推理器(或使用ModelFactory.createOntologyModel()
似乎存在。我在MongoDB集成之前的其他实验使用ModelFactory.createOntologyModel()
并且我以编程方式将材料添加到模型中,然后调用{{ 1}}产生可以传递给ARQ查询引擎的DatasetFactory.create(model)
。毫不奇怪,RDFS Dataset
机制被正确调用:
subClassOf
所以问题就变成了:如何有效地设置 mm = ModelFactory.createOntologyModel();
add(mm, "A", "Item");
add(mm, "B", "A");
add(mm, "C", "B");
Dataset ds = DatasetFactory.create(mm); // same interface as above
QueryExecution qe = QueryExecutionFactory.create(query, ds) ;
ResultSet rs = qe.execSelect() ;
提供程序以及可以使用RDFS推理器的自定义Dataset
实现?目前,我正在欺骗&#34;从Graph
获取(默认?)模型并使用RDFS推理器重新绘制并从中构建数据集:
Graph
简而言之,我从模型中获取 Graph g = new JenaMongoGraph(various args);
Model model = ModelFactory.createModelForGraph(g);
Model rdfsModel = ModelFactory.createRDFSModel(model);
Dataset ds = DatasetFactory.create(rdfsModel);
// proceed "as normal" from here
,而不是简单地从SDB正在进行的Dataset
获取。这有效 - 但有更好的方法吗? Graph
&#34;运行节目&#34;之间存在紧张关系。关于携带推理信息的Graph
和find()
。