Я хочу вставить данные в свою онтологию, используя этот код:
Resource resource = model.createResource(X_NAMESPACE + Global_ID);
Property prop = model.createProperty(RDF_NAMESPACE + "type");
Resource obj = model.createResource(X_NAMESPACE + "X");
model.add(resource, prop, obj);
Во-первых, правильно ли этот код создает отдельного человека указанного типа? Когда я запускаю этот код, он сохраняет без проблем, и модель выглядит правильно, но когда я хочу запросить модель, у меня возникли проблемы. Например, я сохраняю некоторые данные в X, и когда я его извлекаю, извлекаются все остальные данные.
Ваш код для создания ресурса правильный, но он не очень идиоматичен. Существуют методы, предоставляемые интерфейсом модели, которые облегчат создание ресурсов, и в интерфейсе ресурсов есть методы, которые упростят добавление типов. Код Heres, который иллюстрирует их:
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.vocabulary.RDF;
public class CreateResourceExample {
public static void main(String[] args) {
Model model = ModelFactory.createDefaultModel();
String NS = "http://stackoverflow.com/q/22471651/1281433/";
model.setNsPrefix( "", NS );
// Create the class resource
Resource thing = model.createResource( NS+"ThingA" );
// The model API provides methods for creating resources
// of specified types.
Resource x = model.createResource( NS+"X", thing );
// If you want to create the triples manually, you can
// use the predefined vocabulary classes.
Resource y = model.createResource( NS+"Y" );
model.add( y, RDF.type, thing );
// You can also use the Resource API to add properties
Resource z = model.createResource( NS+"Z" );
z.addProperty( RDF.type, thing );
// Show the model
model.write( System.out, "TTL" );
}
}