0

在我的本体中,我使用的是SKOS概念。在文档中有标签(如prefLabelmentioned):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类似乎有这样一个属性,用于添加带有 language 的标签。但我使用的是InfModel,所以我无法将资源作为OntResource.

4

1 回答 1

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 .
于 2013-03-29T02:27:24.850 回答