Архив проекта. Данный проект был завершён в 2005 году и более не развивается. Исходный код доступен на GitHub. Project Archive. This project was completed in 2005 and is no longer actively maintained. Source code is available on GitHub.
Knowledge Engineering for .NET
Инженерия знаний для .NET

Build Intelligent Systems with
Knowledge Representation

Создавайте интеллектуальные системы с
представлением знаний

A hybrid knowledge representation language extending C# with ontology-based features for the Microsoft .NET platform. Bridging knowledge engineering and software engineering.

Гибридный язык представления знаний, расширяющий C# средствами онтологий для платформы Microsoft .NET. Объединение инженерии знаний и программной инженерии.

Everything You Need for
Knowledge Engineering

Все необходимое для
инженерии знаний

A complete toolkit for creating, editing, extracting, and converting knowledge bases on the .NET platform.

Полный набор инструментов для создания, редактирования, извлечения и конвертации баз знаний на платформе .NET.

Knowledge Editor

Редактор знаний

A visual tool for creating and editing knowledge bases. Design ontologies, define concepts, relations, and rules through an intuitive graphical interface.

Визуальный инструмент для создания и редактирования баз знаний. Проектирование онтологий, определение концептов, отношений и правил через интерактивный графический интерфейс.

Visual IDE

Knowledge Prospector

Automatically extracts structured knowledge from Internet resources. Discovers concepts, relationships, and facts from unstructured web content.

Автоматическое извлечение структурированных знаний из Интернета. Обнаружение концептов, отношений и фактов из неструктурированного веб-контента.

Web Mining

KIF Converter

Конвертер KIF

Converts knowledge bases to the Knowledge Interchange Format (KIF), enabling interoperability with other knowledge-based systems and standards.

Конвертация баз знаний в формат KIF (Knowledge Interchange Format), обеспечивающая совместимость с другими системами представления знаний.

Interoperability

The Language

Язык

An extension of C# with first-class knowledge engineering constructs: ontology definitions, concept hierarchies, inference rules, and knowledge queries.

Расширение C# конструкциями для инженерии знаний: определения онтологий, иерархии концептов, правила вывода и запросы к базам знаний.

C# Extension

Integrating Knowledge &
Software Engineering

Интеграция инженерии знаний и программной инженерии

Knowledge.NET is a research project focused on bridging the gap between knowledge engineering and modern software development. It provides a hybrid knowledge representation language built as an extension of C#.

The language supports ontology-based modeling, allowing developers to define concepts, taxonomies, properties, and inference rules directly within the familiar .NET ecosystem. Knowledge bases can be compiled and executed alongside conventional C# code.

By integrating expert systems, ontologies, and semantic reasoning into a mainstream programming platform, Knowledge.NET makes knowledge engineering accessible to a wider audience of software developers and researchers.

Knowledge.NET — исследовательский проект, направленный на преодоление разрыва между инженерией знаний и современной разработкой программного обеспечения. Система предоставляет гибридный язык представления знаний, построенный как расширение C#.

Язык поддерживает моделирование на основе онтологий, позволяя разработчикам определять концепты, таксономии, свойства и правила вывода непосредственно в экосистеме .NET. Базы знаний могут компилироваться и выполняться совместно с обычным кодом на C#.

Интегрируя экспертные системы, онтологии и семантические рассуждения в основную платформу программирования, Knowledge.NET делает инженерию знаний доступной для широкого круга разработчиков и исследователей.

ontology.kn
// Knowledge.NET ontology definition ontology MedicalDiagnosis { concept Disease { property name: string; property symptoms: Symptom[]; } concept Symptom is-a Observable { property severity: float; } rule Diagnose(Patient p) { if p.has("fever", "cough") infer Disease("Flu"); } }

Knowledge Engineering
Background

Об инженерии знаний

Knowledge engineering originated in the 1950s as a branch of artificial intelligence, focusing on the development of languages, methods, and systems for representing and processing knowledge on computers. The primary knowledge representation methods include productions (IF-THEN rules for inference), frames (hierarchical structures for representing concepts), semantic networks (directed multigraphs for concepts and their relationships), and ontologies.

Expert systems became widely popular in the 1970s as intelligent programs built upon separately stored knowledge bases about specific domains. Today, knowledge representation methods have gained renewed importance due to the need for improved information retrieval on the web, particularly through web ontologies and semantic technologies.

A key challenge remains the semantic gap between traditional programming languages (Java, C#) and knowledge engineering languages (LISP, Prolog). These worlds use different terminology, tools, and approaches. Integrating knowledge engineering into mainstream software development platforms is essential for making these techniques broadly accessible.

The Knowledge.NET language is based on the ontology concept developed at Stanford University in the 1990s. It extends C# with knowledge representation constructs using Concept-Property-Individual terminology instead of the traditional frame-based Frame-Slot-Instance terminology. The ontology semantics in Knowledge.NET are similar to OWL (Web Ontology Language) developed by W3C.

Инженерия знаний (knowledge engineering) — одно из важных направлений современного программирования, занимающееся развитием языков, методов и систем представления и обработки знаний на компьютерах. Оно возникло в 1950-х гг. как один из разделов искусственного интеллекта.

Основными методами представления знаний являются: продукции (правила вида ЕСЛИ-ТО для продукционного вывода), фреймы (иерархические структуры для представления знаний о концепциях), семантические сети (ориентированные мультиграфы для представления концепций и их взаимоотношений).

Начиная с 1970-х гг. получили распространение экспертные системы — интеллектуальные программы, основанные на отдельно хранимой базе знаний о предметной области. В настоящее время методы представления знаний приобрели особую актуальность в связи с необходимостью улучшения качества информационного поиска в Интернете.

Язык Knowledge.NET является расширением C# средствами представления гибридных знаний, основанными на концепции онтологии. В Knowledge.NET используется терминология Concept-Property-Individual вместо терминологии фреймовых систем Frame-Slot-Instance. Семантика онтологии Knowledge.NET схожа с языком OWL, разработанным W3C.

Productions

IF-THEN rules for forward and backward chaining inference

Frames

Hierarchical structures representing concepts and their properties

Semantic Networks

Directed multigraphs modeling relationships between concepts

Ontologies

Formal specifications of shared conceptualizations (Concept-Property-Individual)

OWL

W3C Web Ontology Language for semantic web applications

KIF

Knowledge Interchange Format for system interoperability

Продукции

Правила вида ЕСЛИ-ТО для прямого и обратного вывода

Фреймы

Иерархические структуры для представления концепций и их свойств

Семантические сети

Ориентированные мультиграфы для моделирования связей между концепциями

Онтологии

Формальные спецификации общих концептуализаций (Concept-Property-Individual)

OWL

Язык веб-онтологий W3C для семантического веба

KIF

Формат обмена знаниями для совместимости систем

Publications & Source Code

Публикации и исходный код

Research papers, presentations, and source code packages.

Научные статьи, презентации и пакеты с исходным кодом.

The Team

Команда проекта

Research at the laboratory of Java-technologies, Smirnov Scientific Research Institute of Mathematics and Mechanics, St. Petersburg State University.

Разработка в лаборатории Java-технологий НИИ математики и механики СПбГУ под руководством проф. В.О. Сафонова.

VS

Vladimir O. Safonov

Сафонов Владимир Олегович

Professor, Scientific Advisor

Научный руководитель

AN

Anton V. Novikov

Новиков Антон Владимирович

Language Design & Implementation

Разработка языка

MS

Maxim V. Sigalin

Сигалин Максим Владимирович

KIF Converter

Конвертер KIF

AS

Alexey L. Smolyakov

Смоляков Алексей Леонидович

Knowledge Prospector

Knowledge Prospector

DC

Dmitry G. Cherepanov

Черепанов Дмитрий Геннадьевич

Knowledge Editor

Редактор знаний