因为实验室研究课题和项目需要,最近开始接触Jena,准备将自己这段时间每天所学及收获,疑问都记录下来,既可以温故而知新,也希望能对将要学习Jena的同学们一点点帮助。
什么是Jena?A Java API for RDF
什么是RDF?Resource Description Frame(资源描述框架)
简单的来说Jena就是一个被程序员调用来对RDF进行一系列操作的API。
那么什么是Resource(资源)呢?everything is resource
在具体的实现里,resource都需要一个唯一的URI进行标识,同时资源也拥有各种Property(属性),属性的名称也是一个URI。
但是鉴于URI太长,所以我们通常用namespaceprefix:localname的形式作为URI的速记。
一个简单的例子:
// some definitions
static String personURI = "http://somewhere/JohnSmith";
static String fullName = "John Smith";
// create an empty Model
Model model = ModelFactory.createDefaultModel();
// create the resource
Resource johnSmith = model.createResource(personURI);
// add the property
johnSmith.addProperty(VCARD.FN, fullName);
在这个例子中首先我们定义了一些变量,如PersonURI,fullName等。然后生成一个模型(也可以理解成RDF中的图),然后向该模型中添加Property并对其赋值。
当然后两句也可以并在一起执行。
Resource johnSmith =
model.createResource(personURI)
.addProperty(VCARD.FN, fullName);
在这个例子中Property的值是常量,当然其值也可以是其他的资源。如下面的例子:
String personURI = "http://somewhere/JohnSmith";
String givenName = "John";
String familyName = "Smith";
String fullName = givenName + " " + familyName;
// create an empty Model
Model model = ModelFactory.createDefaultModel();
// create the resource
// and add the properties cascading style
Resource johnSmith
= model.createResource(personURI)
.addProperty(VCARD.FN, fullName)
.addProperty(VCARD.N,
model.createResource()
.addProperty(VCARD.Given, givenName)
.addProperty(VCARD.Family, familyName));
在这个例子中就是将一个资源做为johnSmith这个资源中VACRD.N属性的值,该资源包括两个属性VCARD.Given和VACRD.Family
浙公网安备 33010602011771号