在我的本体论中,我正在使用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
。
答案 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 .