【问题标题】:Adding blank nodes to a Jena model向 Jena 模型添加空白节点
【发布时间】:2017-12-31 18:32:02
【问题描述】:

我正在尝试使用一组现有的三元组填充 Jena 本体模型,其中一些包含空白节点。我想忠实地在这个新模型中维护这些空白节点,但我无法找到将它们添加到 Jena 模型中的方法。

我一直在使用:

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

向模型添加新语句:

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

但这仅允许某些类型作为主语、谓语和宾语;资源主体、属性谓词、RDFNode 对象。这些类型都不允许添加空白节点作为主题或对象,例如通过:

Node subject =  NodeFactory.createBlankNode(subjectValue);

有什么建议吗?我试过只使用空白节点作为资源并创建一个资源对象,但这会破坏一切,因为它们成为类而不是空白节点。

任何帮助将不胜感激,一直在用这个拉我的头发。

【问题讨论】:

标签: java jena blank-nodes


【解决方案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]

【讨论】:

  • 这确实是我最后做的,谢谢你的回答。
  • 如何创建一个你自己分配 id 的空白节点?
猜你喜欢
  • 2018-11-08
  • 1970-01-01
  • 2021-07-01
  • 2022-10-19
  • 1970-01-01
  • 1970-01-01
  • 2015-06-22
  • 1970-01-01
  • 2018-03-06
相关资源
最近更新 更多