如何在 RDF4J(以前称为 Sesame)中合并两个或多个模型?
How to merge two or more models in RDF4J (formerly Sesame)?
例如,在 Apache Jena 中,有一种方法只需调用 model1.add(model2)
即可将一个模型附加到另一个模型。
如果您将模型解释为一组语句,这是否也适用于 RDF4J?
在 Eclipse RDF4J 中,Model 是一个 Java 集合(类似于 Set
或 List
)。所以你可以使用标准的 Java 集合操作。要附加两个模型,只需执行以下操作:
model1.addAll(model2);
请注意,此操作仅附加语句。如果 model2
包含您希望复制的任何命名空间声明,则您必须单独执行此操作。例如,要简单地复制 model2
名称空间声明,覆盖 model1
:
中的任何现有声明
model2.getNamespaces().stream().forEach(model1::setNamespace);
或者,如果您只想复制 model1
尚未声明的那些前缀:
model2.getNamespaces().stream()
.filter(ns -> !model1.getNamespace(ns.getPrefix()).isPresent())
.forEach(model1::setNamespace);
例如,在 Apache Jena 中,有一种方法只需调用 model1.add(model2)
即可将一个模型附加到另一个模型。
如果您将模型解释为一组语句,这是否也适用于 RDF4J?
在 Eclipse RDF4J 中,Model 是一个 Java 集合(类似于 Set
或 List
)。所以你可以使用标准的 Java 集合操作。要附加两个模型,只需执行以下操作:
model1.addAll(model2);
请注意,此操作仅附加语句。如果 model2
包含您希望复制的任何命名空间声明,则您必须单独执行此操作。例如,要简单地复制 model2
名称空间声明,覆盖 model1
:
model2.getNamespaces().stream().forEach(model1::setNamespace);
或者,如果您只想复制 model1
尚未声明的那些前缀:
model2.getNamespaces().stream()
.filter(ns -> !model1.getNamespace(ns.getPrefix()).isPresent())
.forEach(model1::setNamespace);