2017-07-25 65 views
1

我正在嘗試用現有的三元組集合填充一個Jena本體模型,其中一些包含空白節點。我想要忠實地維護這個新模型中的這些空白節點,但我無法找到將它們添加到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

['ResourceFactory.createResource()'](https://jena.apache.org/documentation/javadoc/jena/ org/apache/jena/rdf/model/ResourceFactory.html#createResource--)是正確的方法。使用[API而不是SPI](https://stackoverflow.com/a/6982965/1371329)來操作RDF數據。 – jaco0646

回答

0

好吧,如果你已經有一個現有的三元組集合,你可以很容易地從文件通過閱讀:

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]

+0

這的確是我最後做的,謝謝你的回答。 –