Система атрибут–значение
Система атрибут–значение — это базовая структура представления знаний, представляющая собой таблицу, в которой столбцы обозначают «атрибуты» (также называемые «свойствами», «предикатами», «характеристиками», «измерениями», «полями», «заголовками» или «независимыми переменными» — в зависимости от контекста), а строки — «объекты» (также именуемые «сущностями», «экземплярами», «элементами», «записями» или «зависимыми переменными»). Каждая ячейка такой таблицы задаёт значение (также называемое «состоянием») конкретного атрибута конкретного объекта[1]. На международном уровне стандарты представления метаданных в формате атрибут-значение регулируются ISO/IEC 11179-3 и JSON-LD (W3C)[2].
Пример системы атрибут–значение
Ниже приведён пример системы атрибут–значение. Она содержит 10 объектов (строки) и пять признаков (столбцы). В данном примере таблица включает только целочисленные значения. В общем случае, система атрибут–значение может содержать данные любого типа, как числовые, так и нечисловые. Система атрибут–значение отличается от простого списка признаков тем, что каждый признак может принимать определённый набор значений (например, признак P1 в таблице ниже domain {0,1,2}), а не просто быть присутствующим или отсутствующим[3].
| Объект | P1 | P2 | P3 | P4 | P5 |
|---|---|---|---|---|---|
| O1 | 1 | 2 | 0 | 1 | 1 |
| O2 | 1 | 2 | 0 | 1 | 1 |
| O3 | 2 | 0 | 0 | 1 | 0 |
| O4 | 0 | 0 | 1 | 2 | 1 |
| O5 | 2 | 1 | 0 | 2 | 1 |
| O6 | 0 | 0 | 1 | 2 | 2 |
| O7 | 2 | 0 | 0 | 1 | 0 |
| O8 | 0 | 1 | 2 | 2 | 1 |
| O9 | 2 | 1 | 0 | 2 | 2 |
| O10 | 2 | 0 | 0 | 1 | 0 |
Примером использования системы атрибут–значение для нечисловых данных может служить конфигурационный файл YAML, где ключи выступают атрибутами, а значения могут быть строками, числами, списками или логическими типами[4].
| Ключ (Атрибут) | Значение | Тип данных |
|---|---|---|
server.port |
8080 |
Число |
tbe.deployment.url |
"https://TODO" |
Строка |
tbe.db.host |
"postgresql:5432" |
Строка |
tbe.storage.type |
s3 |
Строка |
tbe.auth.root-admin-emails |
['toolbox.admin@example.com'] |
Список |
springdoc.api-docs.enabled |
true |
Логическое |
logging.level.root |
INFO |
Строка |
Другие термины для системы атрибут–значение
Системы атрибут–значение широко распространены в различных исследовательских направлениях и описаны под разными названиями:
- Плоские данные
- Таблица расчётов
- Система атрибут–значение (Ziarko & Shan, 1996)
- Информационная система (Павлак, 1981)
- Система классификации (Ziarko, 1998)
- Система представления знаний (Wong & Ziarko, 1986)
- Информационная таблица (Yao & Yao, 2002)
- Триплет (в контексте RDF и Semantic Web, где предикат соответствует атрибуту, а объект — значению)[5][6]
- Класс, базовая линия конфигурации (Configuration Baseline) и снимок (Snapshot) (в методологии ITIL и системах CMDB)[7][8]
Применение в современных технологиях
Объектно-ориентированное программирование и ORM
В объектно-ориентированном программировании паттерн «атрибут-значение» часто применяется для гибкого хранения характеристик. Например, в модели товаров интернет-магазинов свойства могут задаваться динамически через коллекции вложенных объектов. В таком случае товар содержит список атрибутов, где каждый элемент определяет конкретную характеристику, её значение и единицу измерения[9].
Концепция атрибутов также лежит в основе механизмов метапрограммирования, позволяющих декларативно описывать поведение кода. В языке C# для связывания метаданных с элементами программы используются атрибуты, которые указываются в квадратных скобках перед объявлением сущности. В Python для добавления метаинформации и изменения поведения объектов применяются декораторы и аннотации[10].[11]
В современных ORM-фреймворках (таких как Entity Framework и SQLAlchemy) атрибуты кода маппятся на колонки баз данных с помощью специальных аннотаций. В Entity Framework для этого используются атрибуты конфигурации, например, [Column] для переопределения имени колонки, [Key] для первичного ключа или [Required] для обязательных полей. В SQLAlchemy связь атрибутов класса с колонками таблицы осуществляется через объекты Column или автоматическое сопоставление по совпадающим именам[12].[13]
Управление ИТ-инфраструктурой
В контексте CMDB и ITSM система «атрибут–значение» играет ключевую роль в однозначной идентификации конфигурационных единиц (КЕ). Для точной идентификации используются уникальные идентификаторы, а также классы и конфигурационные модели, задающие набор изменяемых и неизменяемых атрибутов[14].[15]
Основные функции системы атрибутов включают:
- Хранение характеристик КЕ: фиксация базовых параметров, таких как уникальный идентификатор, имя, тип, версия, статус, владелец и местоположение[14].
- Управление взаимосвязями: описание критически важных зависимостей между КЕ (например, «зависит от», «размещено на»), что позволяет оценивать влияние сбоев или изменений на ИТ-услуги[14].[16]
Для обеспечения актуальности данных применяются следующие методы:
- Автоматическое обнаружение (Discovery): использование инструментов сетевого сканирования и программных агентов, непрерывно собирающих данные об изменениях[14].[17]
- Интеграция с рабочими процессами: автоматическая синхронизация CMDB с другими системами и обновление данных о КЕ в рамках процессов управления изменениями и инцидентами[14].[18]
- Сверка состояний: регулярное сравнение планового и фактического состояния КЕ для поиска расхождений, а также ведение истории изменений[16].
Искусственный интеллект и анализ данных
В машинном обучении концепция «атрибут-значение» эволюционировала от ручного конструирования признаков к их автоматизированному извлечению. В современных системах традиционные атрибуты вытеснены эмбеддингами — плотными многомерными векторами, которые модель формирует самостоятельно. Эти векторы продолжают выполнять роль атрибутов объекта, представляя данные в числовом формате для алгоритмов[19].
В архитектурах искусственного интеллекта и графах знаний система «атрибут-значение» используется для детализации узлов (сущностей) и рёбер (связей). Такой подход позволяет хранить метаданные, веса и оценки уверенности, обеспечивая переход от жёстких плоских таблиц к гибким семантическим сетям[20].[21]
Государственные информационные системы
Примером использования системы атрибутов в государственных информационных системах является система маркировки «Честный ЗНАК», где она применяется для фиксации данных о товарах. Информация представляется в форматах JSON и XML, а ключевым идентификатором выступает GTIN (или good_id)[22].
Примечания
Литература
- Barsalou, Lawrence W. Components of conceptual representation: From feature lists to recursive frames // Categories and Concepts: Theoretical Views and Inductive Data Analysis : [англ.] / Lawrence W. Barsalou, Christopher R. Hale. — Academic Press, 1993. — P. 97–144. — ISBN 9780127141756.
- Pawlak, Zdzisław. Rough sets: Theoretical Aspects of Reasoning about Data : [англ.]. — Kluwer, 1991.
- Ziarko, Wojciech; Shan, Ning (1996). “A method for computing all maximally general rules in attribute–value systems”. Computational Intelligence [англ.]. 12 (2): 223—234. DOI:10.1111/j.1467-8640.1996.tb00260.x. S2CID 7200948.
- Pawlak, Zdzisław; Shan, Ning (1981). “Information systems: Theoretical foundations”. Information Systems [англ.]. 6 (3): 205—218. DOI:10.1016/0306-4379(81)90023-5. Дата обращения 2024-06-12.
- Wong, S. K. M.; Ziarko, Wojciech; Ye, R. Li (1986). “Comparison of rough-set and statistical methods in inductive learning”. International Journal of Man-Machine Studies [англ.]. 24: 53—72. DOI:10.1016/S0020-7373(86)80033-5.
- Yao, J. T.; Yao, Y. Y. (2002). “Induction of classification rules by granular computing”. Proceedings of the Third International Conference on Rough Sets and Current Trends in Computing (TSCTC'02) [англ.]. London: Springer-Verlag. pp. 331—338.
- Watanabe, Satosi. Pattern Recognition: Human and Mechanical : [англ.]. — John Wiley & Sons, 1985.
- Ziarko, Wojciech (1998). “Rough sets as a methodology for data mining”. In Polkowski, Lech; Skowron, Andrzej. Rough Sets in Knowledge Discovery 1: Methodology and Applications [англ.]. Heidelberg: Physica-Verlag. pp. 554—576.