Как получить все ограничения на человека в Йене

в моей онтологии есть класс Road и класс магазина.

В классе Road есть человек по имени Highstreetroad, который связан с 8 разными людьми в магазине.

Я пытаюсь распечатать все существующие утверждения, где «Road hasShop Shop». Должно быть 8 утверждений, но это дает мне только одно. Я использую Jena для этого. Вот пример из моего кода:

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

Я считаю, что причина связана с «getProperty», поскольку javadoc говорит, что будет возвращен только один, но я хочу больше одного:

"Ответить на какое-то утверждение (это, p, O) в связанной модели. Если таких утверждений несколько, может быть возвращено любое из них. Если таких утверждений не существует, возвращается null - в этом отличие от getRequiredProperty."

Спасибо


person gray    schedule 24.07.2012    source источник


Ответы (1)


В этом случае вам нужно OntResource.listPropertyValues.

person Ian Dickinson    schedule 24.07.2012
comment
Спасибо, Ян, я только что попробовал ваше предложение и получил следующий результат при запуске: com.hp.hpl.jena.rdf.model.impl.NodeIteratorImpl@99e1fe com.hp.hpl.jena.rdf.model. impl.NodeIteratorImpl@c41a30 com.hp.hpl.jena.rdf.model.impl.NodeIteratorImpl@e5b079 com.hp.hpl.jena.rdf.model.impl.NodeIteratorImpl@182ce41 com.hp.hpl.jena.rdf.model .impl.NodeIteratorImpl@130ca95 com.hp.hpl.jena.rdf.model.impl.NodeIteratorImpl@17b0c1b com.hp.hpl.jena.rdf.model.impl.NodeIteratorImpl@a50144 com.hp.hpl.jena.rdf. model.impl.NodeIteratorImpl@af257d не могли бы вы предположить, почему это может быть так? Спасибо - person gray; 25.07.2012
comment
Я понял, это то, что я сделал для тех, у кого такая же проблема - listPropertyValues(properties).toList(); - person gray; 25.07.2012
comment
Я не вижу проблемы: из listPropertyValues вы получаете итератор, стандартный шаблон Java. Jena расширяет стандартные итераторы, чтобы также предоставить метод toList, как вы обнаружили, но обычно вы используете итератор в цикле for или while. Материализация итератора в список удобна для небольших списков, но может потребовать много памяти, если имеется много значений. - person Ian Dickinson; 25.07.2012
comment
спасибо Ян, я просто использовал его как итератор, как вы посоветовали, и он отлично работает - person gray; 28.07.2012