Как я могу изменить или удалить значения свойств? - Jena API - PullRequest
3 голосов
/ 14 августа 2011

Я использую Йену.Я хотел бы знать, если есть метод, который позволяет изменять или удалять значения свойств экземпляра?

Спасибо

Ответы [ 4 ]

4 голосов
/ 15 августа 2011

Заявления в Йене по замыслу неизменны.Чтобы изменить значение свойства p некоторого субъекта s, необходимо добавить новый оператор с той же темой и предикатом и удалить старый оператор.Это всегда верно для Йены, даже если API иногда скрывает это от вас.Например, OntResource и его подклассы имеют множество вариантов setProperty, но под капотом они выполняют один и тот же процесс добавления новых тройных и удаления старых.

2 голосов
/ 14 августа 2011

Это зависит от того, какой Jena API вы используете. Например, если вы используете Jena 3.0 и Model API, вы можете использовать Model.remove(Statement), чтобы удалить свойство, выбрав соответствующий субъект / предикат / объект для оператора. Модификации можно добиться, удалив старую версию Statement и добавив новую версию.

0 голосов
/ 16 марта 2015

У меня была похожая задача: мне нужно удалить свойство с указанным значением. Надеюсь, что следующий фрагмент кода поможет кому-то.

  public void removeLabel(String language, String value) {
        NodeIterator nodeIterator = resource.getModel().listObjectsOfProperty(RDFS.label);
        RDFNode foundToDelete = null;
        while (nodeIterator.hasNext()) {
            RDFNode next = nodeIterator.next();
            boolean langsAreIdentical = next.asLiteral().getLanguage().equals(language);
            boolean valuesAreIdentical = next.asLiteral().getLexicalForm().equals(value);
            if (langsAreIdentical && valuesAreIdentical) {
                foundToDelete = next;
                break;
            }
        }
        resource.getModel().remove(resource, RDFS.label, foundToDelete);
    }
0 голосов
/ 16 декабря 2013

Чтобы удалить только сам оператор, т. Е. Отношение между экземпляром и значением свойства, вы можете использовать: OntResource.removeProperty (Свойство, RDFNode)

Если вы хотите полностью удалить значение свойства, то есть значение и все отношения к нему, вы можете использовать: OntResource.remove ()

...