2013-02-19 1 views
0
Can you please help me in building the code in setting a Resource to a Class 

import com.hp.hpl.jena.ontology.Individual; 
import com.hp.hpl.jena.ontology.OntModel; 
import com.hp.hpl.jena.query.Dataset; 
import com.hp.hpl.jena.query.ReadWrite; 
import com.hp.hpl.jena.rdf.model.ModelFactory; 
import com.hp.hpl.jena.rdf.model.Resource; 
import com.hp.hpl.jena.tdb.TDBFactory; 

public class ModelMain { 

    String dbName = "DataBase"; 
    String ns1 = "http://text.book/Someone#"; 
    String ns; 
    Dataset ds; 
    OntModel m; 

// создали модель и хранится в базе данных общественного StoryModel (Имя String) {Как создать метод общественного статическую логическую SetType (ресурс ресурсов, String TYPENAME) в Йене ФРР

 ns = ns1 + Name; 
     ds = TDBFactory.createDataset(dbName); 
     m = ModelFactory.createOntologyModel(); 

    } 

// Назначение ресурсов для класса
общественного недействительными initModel() {

 m.createClass(ns + "Thing"); 
     m.createClass(ns + "Object"); 
     saveModel(); 

    } 

// читать и писать модель общественного недействительной saveModel() {

 ds.begin(ReadWrite.WRITE); 
     m.write(System.out, "RDF/XML-ABBREV"); 

    } 

// создание ресурса
общественного createResource ресурсов (String ResourceName, String clsName) {

 String resourceuri = ns + resourceName; 
     String classuri = ns + className; 

     Resource classr = m.getResource(classuri); 
     Individual i = m.createIndividual(resourceuri, classr); 

     return i; 

    } 

// Присвоение типа ресурсу
общественной статической логической SetType (Ресурс ресурса, String typeName) { // как присвоить тип ресурсу } }

ответ

1

Вы должны добавить заявление к данным:

model.add(resource, RDF.type, TheTypeAsAResource) ; 
+0

Я очень плохой в jena Я не могу понять, как этот «model.add (ресурс, RDF.type, TheTypeAsAResource)» работает ... Можете ли вы объяснить ... :( – user2057437

1

Если у вас есть использование OntResource (который Individual есть), то вы можете потенциально рассматривать метод setPropertyValue(Property, RDFNode), чтобы установить тип. Обратите внимание, что это отличается только от @AndyS's answer тем, что оно удаляет любые другие свойства RDF.type, которые уже существуют на графике, перед добавлением новой тройки.

Начиная с модели:

:a rdf:type :Cat . 
:a rdf:type :DomesticAnimal . 

Следующий код (при условии a является Individual):

a.setPropertyValue(RDF.type, TheTypeAsResource); 

приведет к модели:

a: rdf:type :theType . 

Это, естественно , будет служить только вашей цели, если вы не собираетесь добавлять дополнительный тип в ресурс, и вместо этого намереваются установить определенный тип для этого ресурса.