Добавление пустых узлов в модель Jena

Я пытаюсь заполнить модель онтологии Jena существующим набором троек, некоторые из которых содержат пустые узлы. Я хочу сохранить эти пустые узлы внутри этой новой модели, но не могу придумать, как добавить их в модель Jena.

Я использовал:

Statement s = ResourceFactory.createStatement(subject, predicate, object);

Чтобы добавить новые утверждения в модель:

private OntModel model = ModelFactory.createOntologyModel();
model.add(s);

но это допускает только определенные типы как субъект, предикат и объект; Субъект ресурса, предикат свойства, объект RDFNode. Ни один из этих типов не позволяет добавлять пустой узел в качестве субъекта или объекта, например:

Node subject =  NodeFactory.createBlankNode(subjectValue);

Какие-либо предложения? Я попытался просто использовать пустые узлы в качестве ресурсов и создать объект Resource, но это нарушает все, когда они становятся классами, а не пустыми узлами.

Любая помощь будет высоко ценится, вырвал мои волосы с этим.

1 ответ

Решение

Хорошо, если у вас уже есть набор троек, вы можете легко прочитать их из файла, используя:

OntModel model = ModelFactory.createOntologyModel();
model.read(new FileInputStream("data.ttl"), null, "TTL");

это позаботится о пустых узлах, см. документацию jena

вы можете создать пустой узел вручную следующим образом:

Resource subject = model.createResource("s");
Property predicate = model.createProperty("p");
Resource object = model.createResource();
model.add(subject, predicate, object);

что приведет к чему-то вроде:

[s, p, aad22737-ce84-4564-a9c5-9bdfd49b55de]

Другие вопросы по тегам