我正在尝试使用现有的三元组填充Jena本体模型,其中一些包含空白节点。我想忠实地在这个新模型中保留这些空白节点,但我无法找到将它们添加到Jena模型中的方法。
我一直在使用:
Statement s = ResourceFactory.createStatement(subject, predicate, object);
向模型添加新语句:
private OntModel model = ModelFactory.createOntologyModel();
model.add(s);
但这只允许某些类型作为主语,谓词和对象;资源主题,属性谓词,RDFNode对象。这些类型都不允许将blanknode添加为主题或对象,例如:
Node subject = NodeFactory.createBlankNode(subjectValue);
有什么建议吗?我尝试过只使用blanknodes作为资源并创建一个Resource对象,但是当它们变成类而不是空白节点时会破坏所有内容。
任何帮助都会非常感激,用这个拉我的头发。
答案 0 :(得分:1)
好吧,如果您已经有一组现有的三元组,您可以使用以下方法轻松地从文件中读取它们:
OntModel model = ModelFactory.createOntologyModel();
model.read(new FileInputStream("data.ttl"), null, "TTL");
这将处理空白节点,请参阅jena documentation
您可以手动创建一个空白节点,如下所示:
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]