如何使用jena为资源设置标签

时间:2013-03-28 21:42:56

标签: jena

在我的本体论中,我正在使用SKOS个概念。在文档中有标签(如prefLabel等,mentioned):http://www.w3.org/TR/skos-reference/#labels。 如何通过定义语言将这样的标签设置为Jena中的资源? 我添加概念的示例如下所示:

 Resource skosConcept = infModel.createResource("http://www.w3.org/2004/02/skos/core#Concept");
 Resource instance =  infModel.createResource("http://eg.com#Instance");
 infModel.add(instance, RDF.type, skosConcept);

但是我怎样才能定义skos:prefLabel?使用我的实例资源的属性?以及如何设置语言?类OntResource似乎具有添加带语言标签的属性。但我使用的是InfModel,因此我无法将资源视为OntResource

1 个答案:

答案 0 :(得分:1)

就像您使用createResource创建资源一样,您可以使用createProperty创建属性,然后以与您已使用的方式相同的方式将所需的三元组添加到模型中。可以使用createLiteral创建具有语言类型的文字。

import com.hp.hpl.jena.rdf.model.InfModel;
import com.hp.hpl.jena.rdf.model.Literal;
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;
import com.hp.hpl.jena.reasoner.Reasoner;
import com.hp.hpl.jena.reasoner.ReasonerRegistry;
import com.hp.hpl.jena.vocabulary.RDF;

public class SKOS {
    public static void main(String[] args) {
        Model model = ModelFactory.createDefaultModel();
        Reasoner reasoner = ReasonerRegistry.getOWLReasoner();
        InfModel infModel = ModelFactory.createInfModel(reasoner, model);

        String skos = "http://www.w3.org/2004/02/skos/core#";

        Resource skosConcept = infModel.createResource( skos+"Concept" );
        Resource instance =  infModel.createResource("http://eg.com#Instance");

        infModel.add(instance, RDF.type, skosConcept);

        Property prefLabel = infModel.createProperty( skos+"prefLabel" );
        Literal label = infModel.createLiteral( "a preferred label in English", "en" );

        // either of these lines is fine
        instance.addLiteral( prefLabel, label );
        infModel.add( instance, prefLabel, label );

        model.write( System.out, "N3" );
    }
}

此代码还显示了模型,以便我们可以看到属性设置为

<http://eg.com#Instance>
  a       <http://www.w3.org/2004/02/skos/core#Concept> ;
  <http://www.w3.org/2004/02/skos/core#prefLabel>
          "a preferred label in English"@en .