Изменить: этот ответ был опубликован в ответ на исходный другой вопрос.
Я должен получить A, но я ничего не получаю!
Нет, вы не должны. сам по себе RDF ничего не включает в себя об онтологиях, это просто тупой граф, чем и занимается RDFLib.
Выход за рамки этого называется обсуждением данных. Это дополнительный слой. Голая RDFLib не выполняет рассуждений, поскольку она сложна и, как правило, требует больших вычислительных ресурсов. Существуют сторонние решения для рассуждений, но прежде чем их использовать, вы должны понять, что они делают и какое влияние они окажут на производительность.
Наивный подход к рассуждениям RDFS и OWL 2 по графу RDFLib — это реализация OWL 2 RL Ивана Германа. Его очень легко использовать, но он вам почти наверняка не понадобится, если только вы не делаете игрушечное приложение, потому что это тупой алгоритм, который занимает очень много времени на графе реалистичного размера.
FuXi – это более мощная библиотека, реализующая более интеллектуальные Rete-алгоритм UL. Но я не уверен, поддерживается ли он и можно ли его использовать с текущими версиями RDFLib.
Существует также множество решений для рассуждений, не основанных на Python, таких как Pellet, но их интеграция с RDFLib — или любая другая RDF-библиотека — может быть рутинной работой.
Вы также должны учитывать, какой тип логического вывода действительно требуется вашему приложению. Вам нужно сделать вывод о членстве в этом подклассе? Если да, может быть, это все, что вам нужно? — тогда, возможно, вы могли бы сделать это вручную, перебирая тройки X rdfs:subClassOf Y
с помощью RDFLib и вставляя новые тройки A rdf:type Y
.
В любом случае помните, что рассуждения Semantic Web — это сложная тема, которая сильно зависит от приложения.
person
Vasiliy Faronov
schedule
09.12.2013