将 org.openrdf.model.impl.GraphImpl 转换为 info.aduna.iteration.Iteration

converting org.openrdf.model.impl.GraphImpl to info.aduna.iteration.Iteration

我有一个 class org.openrdf.model.impl.GraphImpl 的图形对象,我可以摆脱它 org.openrdf.model.util.PatternIterator 或者可以在它上面调用 .iterator() 。 我正在尝试使用 org.openrdf.repository.RepositoryConnection:

中的添加方法
add(info.aduna.iteration.Iteration, org.openrdf.model.Resource)

到目前为止,我没有成功将图形的迭代器或 PatternIterator 转换为 info.aduna.iteration.Iteration,尽管它看起来应该是一件直截了当的事情。 非常感谢任何帮助。

首先,自从芝麻发布 2.7.0 以来,org.openrdf.model.Graph(和默认的 GraphImpl 实现)已被弃用,取而代之的是 org.openrdf.model.Model 接口(附带 LinkedHashModelTreeModel 实现)。如果您使用的是 Sesame 2.7.0 或更高版本,您可能需要考虑改用 Model,因为它功能更丰富且通常更易于使用(有关详细信息,请参阅 relevant section in the userdocs)。

但是,由于 ModelGraph 都扩展了 java.util.Collection,因此都是 java.lang.Iterable 实例,您只需使用 RepositoryConnection.add(Iterable<? extends Statement> statements, Resource... contexts) 代替。

换句话说,与其尝试以某种方式转换为 Iteration,您可以简单地这样做:

Model model = new LinkedHashModel();
Graph graph = new GraphImpl();

...
RepositoryConnection conn = repo.getConnection();
conn.add(model); // a Model is an Iterable, so this works
conn.add(graph); // a Graph is an Iterable, so this works