合并两个Jena模型

时间:2014-04-25 13:00:55

标签: rdf jena

我的目标是创建两个模型m1和m2:m1从ActiveMQ读取消息,m2使用SPARQL查询从DataBase中提取其他信息。然后我想把这两个模型变成单个模型。 模型的语法如下:

<http://purl.org/dc/elements/1.1/records/teste>   <http://purl.org/dc/elements/1.1/creator>  ?o0.
?o0  a   <http://purl.org/dc/elements/1.1/person>.

我如何合并它们,以便结果模型就像那样

<http://purl.org/dc/elements/1.1/records/teste>   <http://purl.org/dc/elements/1.1/creator>  ?o0.
?o0  a   <http://purl.org/dc/elements/1.1/person>.

1 个答案:

答案 0 :(得分:0)

the answer to your last question的编辑中,我注意到模型只是三元组的集合,您可以将它们组合在一起以合并它们。在这种情况下,您似乎有一些标准要加入模型。根据yoru问题的措辞,您可以在两个模型中使用一组一致的URI(例如:两个模型中都存在?o0。)

如果有一些确实有这样的自然标准来加入这两个模型那么没有什么可以阻止你使用这两个模型的联合来回答你的问题:

final Model amqp = ModelFactory.createDefaultModel();
// do things to populate this from your AMQP store
final Model dbresult = ModelFactory.createDefaultModel();
// do things to populate this from your query

final Model union = ModelFactory.createUnion(amqp, dbresult);

此外,由于RDF数据模型仅将模型定义为一组RDF Statement,因此您可以将两个模型一起添加。

final Model amqp = ModelFactory.createDefaultModel();
final Model dbresult = ModelFactory.createDefaultModel();

final Model union = ModelFactory.createDefaultModel();
union.add(amqp);
union.add(dbresult)

如果URI 对齐,那么您需要手动定义一些加入它们的标准。您将需要编写对此条件敏感的自定义代码,并将基于此手动编写新模型,或者您需要为其等效性定义一些本体理性并使用推理器。