Jena学习三——代码解释

这篇博客详细解析了Apache Jena的学习过程,包括Model的创建、资源的定义、属性添加、StmtIterator和Statement的使用,以及查询操作。通过一系列的Tutorials,讲解了如何使用Jena进行RDF数据的操作和管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码解释

可以直接官网学习http://jena.apache.org/tutorials/rdf_api.html#ch-Jena%20RDF%20Packages

Tutorial01

package jena.examples.rdf ;
import org.apache.jena.rdf.model.*;
import org.apache.jena.vocabulary.*;

/** Tutorial 1 creating a simple model */

public class Tutorial01 extends Object {
    // some definitions
      static String personURI    = "http://somewhere/JohnSmith";
      static String fullName     = "John Smith";
    
      public static void main (String args[]) {
          // create an empty model
          Model model = ModelFactory.createDefaultModel();

          // create the resource
          Resource johnSmith = model.createResource(personURI);

          // add the property
          johnSmith.addProperty(VCARD.FN, fullName);
      }
}

Model
在Jena中, 一个图(graph)被称为一个模型并被Model接口所表示,所以需要建模分析。

ModelFactory类 是创建不同类型模型的首选方式。在这种情况下,想要空的内存模型,所以要调用ModelFactory.createDefaultModel()。这种方法返回 Model实例,将使用它创建表示家庭中每个成员的 Resource。创建了资源后,可以编写关于这些资源的语句并添加到模型中。

资源(Resource) 是一些实体。它可以是诸如网页的web资源,或者它可以是具体的物理事物,例如树或汽车。它可以是一个抽象的想法,如象棋或足球。资源由URI命名。

addProperty 方法添加属性,两个参数,左边是属性,右边是属性值。

vCard
由IETF开发的用于描述人员和组织的规范。https://www.w3.org/TR/vcard-rdf/

此代码主要涉及 Identification Properties
在这里插入图片描述

Tutorial02

package jena.examples.rdf ;
import org.apache.jena.rdf.model.*;
import org.apache.jena.vocabulary.*;

/** Tutorial 2 resources as property values */

public class Tutorial02 extends Object {
    
      public static void main (String args[]) {
	        // some definitions
	        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));
        
      }
}

createResource()
添加属性VCARD.N,属性值为一个资源,该资源有两个属性VCARD.Given和VCARD.Family

Tutorial03

package jena.examples.rdf ;
import org.apache.jena.rdf.model.*;
import org.apache.jena.vocabulary.*;

/** Tutorial 3 Statement attribute accessor methods */

public class Tutorial03 extends Object {
    public static void main (String args[]) {
    
        // some definitions
        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));
        
        // list the statemen
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值