Аннотация: В этой статье представлена подсистема jena INFFERFERSE и создает простой график RDF. На основе графа RDF мы построили механизм вывода Jena и выполнили автоматический вывод.
Эта статья опубликована в сообществе HUAWEI CLOUD.«Рассуждения о знаниях: рассуждения о знаниях, основанные на Йене (3)», Автор: 30 градусов северной широты.
Подсистема логического вывода Jena предназначена для подключения к Jena ряда механизмов логического вывода или механизмов рассуждений. Эти механизмы используются для получения утверждений RDF из некоторой базовой RDF и любой дополнительной онтологической информации, а также аксиом и правил, связанных с механизмом рассуждений. Основное использование этого механизма заключается в поддержке использования таких языков, как RDFS и OWL, которые позволяют выводить дополнительные факты из данных экземпляра и описаний классов. Механизм разработан, чтобы быть очень общим, включая механизм общих правил, который можно использовать для многих задач обработки или преобразования RDF.
Приложения обычно получают доступ к механизму логического вывода, используя ModelFactory для связывания набора данных с модулем логического вывода для создания новых моделей. Запросы к созданной модели будут возвращать не только операторы, присутствующие в исходных данных, но и другие операторы, полученные из данных с использованием правил, реализованных модулем рассуждений или другими механизмами вывода.
Доступные выводы Дистрибутив Jena включает ряд предопределенных выводов:
Transitive Reasoner: обеспечивает поддержку хранения и обхода решеток классов и свойств. Это реализует только транзитивные и рефлексивные свойства rdfs:subPropertyOf и rdfs:subClassOf .
Обоснование правил RDFS: реализует настраиваемое подмножество требований RDFS.
OWL, OWL Mini, OWL Microreasoners: полезный, но неполный набор реализаций подмножества OWL/Lite языка OWL/Full.
Универсальный обработчик правил: обработчик на основе правил, который поддерживает определенные пользователем правила. Поддерживает прямую цепочку, обратную цепочку таблиц и смешанные стратегии выполнения.
Построить граф RDF
Пакет jena org.apache.jena.rdf.model предоставляет классы и интерфейсы для создания RDF-графиков и управления ими. Среди них ModelFactory предоставляет методы для создания стандартных моделей RDF.
В следующем примере показано, как построить граф RDF.
Model onlineModel = ModelFactory.createDefaultModel();
String prefix = "http://www.example.org/mingjiao#";
Resource mingjiao = onlineModel.createResource(prefix + "mingjiao");
Resource zhangwuji = onlineModel.createResource(prefix + "zhangwuji");
Resource weifuwang = onlineModel.createResource(prefix + "weifuwang");
Resource baimeiyingwang = onlineModel.createResource(prefix + "baimeiyingwang");
Property zhizhang = onlineModel.createProperty(prefix + "zhizhang");
Property leader = onlineModel.createProperty(prefix + "leader");
Property shuyu = onlineModel.createProperty(prefix + "shuyu");
onlineModel.add(zhangwuji, zhizhang, mingjiao);
onlineModel.add(zhangwuji, shuyu, mingjiao);
onlineModel.add(weifuwang, leader, zhangwuji);
PrintUtil.registerPrefix("", prefix);
StmtIterator i = onlineModel.listStatements(null, null, (RDFNode)null);
System.out.println("推理前");
while (i.hasNext()) {
System.out.println('-' + PrintUtil.print(i.nextStatement()));
}
output:
-(:baimeiyingwang :leader :zhangwuji)
-(:zhangwuji :zhizhang :mingjiao)
-(:weifuwang :leader :zhangwuji)
Сначала создайте стандартную модель RDF с помощью ModelFactory.
Во-вторых, используйте ресурсы и свойства для создания ресурсов и свойств в графе RDF соответственно. Здесь мы создали четыре ресурса: Минцзяо, Чжан Уцзи, король Вэй и король Баймэй Ин, а также три атрибута: ответственность, превосходство в лидерстве и принадлежность.
Наконец, тройки ресурсов и свойств добавляются в граф RDF. Такие, как .
Создайте механизм логического вывода jena
jena включает в себя механизм общих правил, а его подсистема вывода используется для реализации функций вывода. Пользователи могут реализовать простой вывод правил на основе механизма вывода jena или настроить правила вывода. Механизм логического вывода jena может вывести дополнительные факты из существующей информации о данных и описаний классов. Ниже приведена процедура вывода на основе графа RDF:
String rules = "[rule: (?p :zhizhang ?c)(?a :leader ?p) -> (?a :shuyu ?c)]";
Reasoner reasoner = new GenericRuleReasoner(Rule.parseRules(rules));
InfModel inf = ModelFactory.createInfModel(reasoner, onlineModel);
Iterator list = inf.listStatements(null, null, (RDFNode)null);
System.out.println("推理后");
while (list.hasNext()) {
System.out.println(" - " + PrintUtil.print(list.next()));
}
output:
- (:baimeiyingwang :shuyu :mingjiao)
- (:weifuwang :shuyu :mingjiao)
- (:baimeiyingwang :leader :zhangwuji)
- (:zhangwuji :zhizhang :mingjiao)
- (:weifuwang :leader :zhangwuji)
Определим правило на основе построенного RDF-графа: «[правило:(?p :чжижанг ?c)(?a :лидер ?p) -> (?a :шую ?c)]», что означает, что если A равно отвечает за Минцзяо, и он является лидером Б, тогда Б принадлежит Минцзяо. С моделью и правилами графа RDF мы связываем их вместе, создавая InfModel, и InfModel будет использовать существующие ресурсы и свойства в графе RDF, чтобы рассуждать в соответствии с определенными нами правилами, а затем получать новые факты. Как и в приведенном выше примере, два новых факта: и , были получены путем рассуждений.
Нажмите «Подписаться», чтобы впервые узнать о новых технологиях HUAWEI CLOUD~