2012-07-24 21 views
1

我的本體論有道路課程和商店課程。如何在耶拿獲得對個人的所有限制

道路類有一個叫'highstreetroad',這與8個不同的店鋪個人有關。

我試圖打印所有'Road hasShop Shop'的現有語句。應該有8個陳述,但它只能給我一個。我正在使用耶拿來做到這一點。下面是我的代碼示例:

ExtendedIterator<Individual> i = model.listIndividuals(RoadCls); 
     while (i.hasNext()) 
     { 
      Individual indi = i.next(); 
      System.out.println(indi.getProperty(hasShopCls)); 
     } 

我相信原因是由於「的getProperty」作爲javadoc的說,只有一個會被退回,但我想不止一個:

「在相關模型中回答一些陳述(this,p,O),如果有多個這樣的陳述,則可以返回它們中的任何一個,如果不存在這樣的陳述,則返回null - 這與getRequiredProperty不同。

感謝

回答

2

在這種情況下,你要OntResource.listPropertyValues

+0

感謝伊恩,我只是想你的建議,而我得到的運行結果如下:[email protected] com.hp.hpl.jena。 [email protected] [email protected] [email protected] com.hp. [email protected] [email protected] [email protected] [email protected]你能否提出爲什麼會出現這種情況?謝謝 – gray 2012-07-24 20:47:23

+0

我明白了,這就是我爲任何有同樣問題的人所做的 - listPropertyValues(properties).toList(); – gray 2012-07-24 22:30:27

+0

我沒有看到問題:你從'listPropertyValues'得到的是一個迭代器,一個標準的Java模式。 Jena擴展標準迭代器以提供'toList'方法,正如您發現的那樣,但通常您會在'for'或'while'循環中使用迭代器。將迭代器實現爲列表對於小列表來說是很好的,但如果有很多值,則可能會佔用大量內存。 – 2012-07-25 17:15:16