# [Шаблоны проектирования онтологий (ODP)](http://ontologydesignpatterns.org/wiki/OPTypes) [TOC] ## Типизация шаблонов [На сайте](http://ontologydesignpatterns.org/wiki/Main_Page) были идентифицированы несколько типов шаблонов онтодизайна (Ontology Design Patterns - ODP) и сгруппированы в шесть семейств: 1. Структурные ODP 1.1 [Логические ODP](http://ontologydesignpatterns.org/wiki/Category:LogicalOP) 1.2 [Архитектурные ODP](http://ontologydesignpatterns.org/wiki/Category:ArchitecturalOP) 2. Отображающие ODP 2.1 [Шаблоны трансформации концептуальных областей в онтологии](http://ontologydesignpatterns.org/wiki/Category:ReengineeringOP) 2.2 [Шаблоны выделения соответствий между онтологиями](http://ontologydesignpatterns.org/wiki/Category:AlignmentOP) 3. [Шаблоны контента (CP)](http://ontologydesignpatterns.org/wiki/Category:ContentOP) 4. Шаблоны онтологических выводов и онтологической нормализации (классификации, обобщения, наследования, материализации, деанонимизации и т.д.) 5. Презентационные ODP * Шаблоны именования * Шаблоны аннотаций 6. [Лексико-синтаксические ODP](http://ontologydesignpatterns.org/wiki/Category:LexicoSyntacticOP) ![](https://i.imgur.com/NbXeAeL.png) ## 1.1 [Логические ODP](http://ontologydesignpatterns.org/wiki/Category:LogicalOP) Логические шаблоны (Logical Patterns - *LP*) имеют следующие характеристики: 1. *LP* должны выражаться только в логических терминах, поскольку их сигнатура (множество имен, предикатов, например, множество классов и свойств в онтологии OWL) пуста (с небольшими исключениями, например, включением по умолчанию класса owl:Thing). 2. С одной стороны, *LP* не должны зависить от конкретной предметной области (от конкретного содержания предметной области), с другой стороны, они зависят от выразительности логического формализма, используемого для представления. Другими словами, *LP* помогают решать проблемы проектирования, когда примитивы языка представления напрямую не поддерживают определенные логические конструкции. Например, если языком представления является OWL, использующего только примитивы класса и бинарного отношения, и разработчику необходимо представить отношение между более чем двумя элементами, тогда *LP* необходимы, чтобы выразить семантику n-арного отношения. 3. *LP* могут быть двух типов: логические макросы и шаблоны преобразования. Шаблоны преобразования переводят логическое выражение с одного логического языка на другой. Семантика первого аппроксимируется, чтобы найти компромисс между требованиями и выразительностью. Примером могут служить n-арные отношения, которые нельзя напрямую выразить в OWL. Аппроксимация n-арного отношения в OWL заключается в создании нового класса, представляющего отношение, и указании аргументов через свойства. ### Пример логического шаблона [<Контекстные Cрезы>](http://ontologydesignpatterns.org/wiki/Submissions:Context_Slices) ```OWL= Ontology(<http://example.org/ContextSlices> Annotation(owl:versionInfo "1.0"@en) Annotation(rdfs:label "Context slices ontology logical pattern"@en) Declaration(Class(cs:Context)) Declaration(Class(cs:ContextualProjection)) DisjointClasses(cs:Context cs:ContextualProjection) DisjointClasses(cs:ContextualProjection cs:Context) SubClassOf(cs:ContextualProjection ObjectAllValuesFrom(cs:hasContext cs:Context)) SubClassOf(cs:ContextualProjection ObjectExactCardinality(1 cs:hasContext)) SubClassOf(cs:ContextualProjection ObjectExactCardinality(1 cs:projectionOf)) Declaration(ObjectProperty(cs:contextualProperty)) ObjectPropertyDomain(cs:contextualProperty cs:ContextualProjection) ObjectPropertyRange(cs:contextualProperty cs:ContextualProjection) Declaration(ObjectProperty(cs:hasContext)) FunctionalObjectProperty(cs:hasContext) ObjectPropertyDomain(cs:hasContext cs:ContextualProjection) Declaration(ObjectProperty(cs:projectionOf)) FunctionalObjectProperty(cs:projectionOf) ObjectPropertyDomain(cs:projectionOf cs:ContextualProjection) ) ``` ## 3. [Шаблоны контента](http://ontologydesignpatterns.org/wiki/Category:ContentOP) Шаблоны контента (Content Patterns - *CP*) имеют следующие характеристики: 1. *CP* кодируют концептуальные, а не логические cхемы. Другими словами, в то время как логические шаблоны (Logical Patterns - *LP*) помогают решать общие задачи онтологического проектирования, независимые от прикладной концептуализации, *CP* предлагают шаблоны для решения проблем проектирования для онтологических классов предметной области и свойств, тем самым решая проблемы описания содержания. 2. *CP* — это приземление *LP* (или композиций *LP* ) с непустой сигнатурой. *CP* имеют свои явные тезаурусы для конкретной предметной области, не пересекающийся со словарями *LP* (т. е. они зависят от содержания). 3. *CP* предлагают варианты решения проблем моделирования предметной области и влияют только на конкретную область онтологии. Обычно они используются в модифицированном виде после их *специализации*, *расширения* и применения *композиции*. 4. В принципе, *CP* не зависят от какого-либо конкретного формального языка представления. Однако, для повторного использования в качестве строительных блоков, их необходимо каким-то образом реализовать. Мы в основном имеем дело с *CP* в контексте семантической сети, поэтому в настоящее время поддерживается OWL в качестве эталонного формализма для представления *CP*. 5. Характеристики *CP*: 1) вычислимые; 2) небольшие по объему; 3) автономные; 4) иерархические; 5) ментально релевантные; 6) лингвистически релевантные; 7) отражают лучшие практики применения. ### Смотри также 1. [Предлагаемые *CP*](http://ontologydesignpatterns.org/wiki/Category:ProposedContentOP) присылаются пользователями шаблонов и перечислены в списке предложений. 2. Набору [оценочных принципов](http://ontologydesignpatterns.org/wiki/Odp:EvaluationPrinciples) должны соответствовать Сертифицированные *CP* (*на данный момент список сертифицированных шаблонов пуст*)