请注意,您需要一个像"35"^^xsd:int
或"35^^xsd:integer
这样的对象,它们是文字,而不是<u:35>
,它是一个(可能是格式错误的)URI。在我看来,这个例子以一种不寻常的方式做事,根据文档,它使用了一些不推荐的方法。无论如何,你可以看到它的创建与来自Node类的方法URI节点(工厂类):
Node.createURI("u:John")
Node.createURI("u:parentOf")
Node.createURI("u:Mary")
有在节点五级createLiteral方法,你可以使用createLiteral(String lex, RDFDatatype dtype)创建一个文本与数据类型。不过,该方法已被弃用,您应该使用NodeFactory中的一种方法代替。
所有这一切说,我不知道是否有任何理由,该示例使用图形界面来创建三元组而不是模型接口。你已经有了一个模型从:
ModelOracleSem model = ModelOracleSem.createOracleSemModel(oracle, szModelName);
这个任务是很容易做,如果你使用Model界面,在这里你有一个像createTypedLiteral方法,这样就可以简单地调用createTypedLiteral(30)
,并得到一个合适的文字。这里有一个例子:
import java.math.BigInteger;
import com.hp.hpl.jena.query.Query;
import com.hp.hpl.jena.query.QueryExecution;
import com.hp.hpl.jena.query.QueryExecutionFactory;
import com.hp.hpl.jena.query.QueryFactory;
import com.hp.hpl.jena.query.ResultSetFormatter;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.Property;
import com.hp.hpl.jena.rdf.model.Resource;
public class CreateAndQueryExample {
/**
* @param args
*/
public static void main(String[] args) {
// You should be able to replace this with the Oracle model
// producing code.
Model model = ModelFactory.createDefaultModel();
Resource john = model.createResource("urn:ex:John");
Resource mary = model.createResource("urn:ex:Mary");
Property age = model.createProperty("urn:ex:age");
// Using Model.add method
model.add(john, age, model.createTypedLiteral(new BigInteger("25"))); // "25"^^xsd:integer
// model.add(john, age, model.createTypedLiteral(25)); // "25"^^xsd:int
// model.add(john, age, model.createTypedLiteral(25l)); // "25"^^xsd:long
// Using the Resource.addProperty method
mary.addProperty(age, model.createTypedLiteral(new BigInteger("35")));
Query query = QueryFactory.create("select * where { ?s <urn:ex:age> ?age . filter (?age < 30) }");
QueryExecution exec = QueryExecutionFactory.create(query, model);
ResultSetFormatter.out(exec.execSelect());
}
}
-----------------------
| s | age |
=======================
| <urn:ex:John> | 25 |
-----------------------
注意文字像''被视为在编辑器中的标记,所以你需要围绕着它在反引号'\'',否则没有人能看到它。我已经解决了这个问题。 –