Java 如何更改Jena中TriplePath的节点?

Java 如何更改Jena中TriplePath的节点?,java,jena,apache-jena,arq,Java,Jena,Apache Jena,Arq,我想更改Jena TriplePath(org.apache.Jena.sparql.core.TriplePath)的一个节点,但我没有找到任何方式。假设我有以下代码: TriplePath tp = null; .... //tp has been defined and not null Node domain = tp.getSubject(); Node predicate = tp.getPredicate(); Node range = tp.getObject(); Node

我想更改Jena TriplePath(org.apache.Jena.sparql.core.TriplePath)的一个节点,但我没有找到任何方式。假设我有以下代码:

TriplePath tp = null;
....
//tp has been defined and not null

Node domain = tp.getSubject();
Node predicate = tp.getPredicate();
Node range = tp.getObject();
Node newNode = NodeFactory.createURI("http://www.example.com/example/example");

//And now? How can I set a Node (domain/predicate/range) of tp?

问题是,如何使用我创建的新节点设置TriplePath tp的任何节点(域/谓词/范围)?有什么办法吗?

您需要创建一个新路径并将其分配给
tp
TriplePath
s是不可变的,就像Jena中其余的SPARQL代数一样(不应该使用任何方法来克服这一点!)

对于更复杂的设置,请使用带有变量的模板并使用:

TriplePath Substitute.substitute(TriplePath triplePath, Binding binding)