Расширение онтологий
В этой статье используется ontateCore на основе DTDL для смарт-зданий в качестве основы для расширения онтологий с новыми свойствами DTDL. Описанные здесь методы являются общими, однако и могут применяться к любой части DTDL на основе топологии с любой функцией DTDL, совместимой с Azure Digital Twins (свойство, связь, компонент).
Отраслевые онтологии корпорации Майкрософт, такие как онтология RealEstateCore на основе DTDL, — отличный способ начать создание решения Интернета вещей. Отраслевые онтологии предоставляют широкий набор базовых интерфейсов, предназначенных для вашего домена и разработанных для работы с полем в службах Интернета вещей Azure, таких как Azure Digital Twins.
Однако ваше решение может иметь особые требования, не охваченные отраслевой онтологией. Например, вы можете связать цифровые двойники с трехмерными моделями, хранящимися в отдельной системе. В этом случае вы можете расширить один из этих онтологий, чтобы добавить собственные возможности, сохраняя все преимущества исходной онтологии.
Иерархия пространства RealEstateCore
В онтологии RealEstateCore на основе DTDL, иерархия пространства используется для определения различных видов пространств: помещений, зданий, зон и т. д. Иерархия расширяется от каждой из этих моделей для определения видов помещений, зданий и зон.
Часть иерархии выглядит как показанная ниже блок-схема.
Дополнительные сведения о ontology RealEstateCore см. в статье "Язык определения цифровых двойников" на основе ontology RealEstateCore для смарт-зданий на GitHub.
Расширение иерархии пространства RealEstateCore
Иногда ваше решение имеет определенные требования, не охваченные отраслевой онтологией. В этом случае расширение иерархии позволяет продолжать использование отраслевой онтологии при настройке под ваши требования.
В этой статье обсуждаются два разных случая, для которых может использоваться расширение иерархии онтологии.
- Добавление новых интерфейсов для концепций, не относящихся к отраслевой онтологии.
- Добавление дополнительных свойств, связей или компонентов в существующие интерфейсы.
Добавление новых интерфейсов для новых концепций
В этом случае необходимо добавить интерфейсы для концепций, необходимых для решения, которые не присутствуют в отрасли онтологии. Например, если в решении существуют другие типы помещений, которые не представлены в онтологии RealEstateCore на основе DTDL, их можно добавить путем расширения непосредственно из интерфейсов RealEstateCore.
В приведенном ниже примере представлено решение, для которого необходимо определить "помещения с фокусом", которые отсутствуют в онтологии RealEstateCore. Помещение с фокусом — это небольшое пространство, предназначенное для того, чтобы пользователи могли сосредоточиться на задаче в течение нескольких часов.
Чтобы расширить отраслевую онтологию с помощью этой новой концепции, создайте новый интерфейс, который будет наследоваться из интерфейсов в отраслевой онтологии.
После добавления интерфейса помещения с фокусом в расширенной иерархии отображается новый тип помещения.
Добавление дополнительных возможностей в существующие интерфейсы
В этом случае необходимо добавить дополнительные свойства, связи или компоненты в интерфейсы, которые находятся в отрасли онтологии.
В этом разделе приведены два примера.
- Если вы создаете решение, отображающее трехмерные чертежи пространств, которые уже имеются в существующей системе, может потребоваться связать каждый цифровой двойник с его трехмерным чертежом (по идентификатору), чтобы при отображении в решении сведений о пространстве также можно было получить трехмерный чертеж из существующей системы.
- Если в решении требуется отслеживать состояние (подключенное/автономное) конференц-залов, то может потребоваться отслеживание состояния конференц-зала для использования в отображении или запросах.
Оба примера можно реализовать с новыми свойствами: drawingId
свойство, которое связывает трехмерный рисунок с цифровым двойником и свойством online
, которое указывает, находится ли конференц-зал в сети или нет.
Как правило, вы не хотите изменять отраслевую онтологию напрямую, так как вам хотелось бы иметь возможность добавлять обновления в решение в будущем (что приведет к перезаписи дополнений). Вместо этого эти типы дополнений можно вносить в свою собственную иерархию интерфейса, которая наследуется от онтологии RealEstateCore на основе DTDL. Каждый создаваемый интерфейс использует множественное наследование интерфейса для расширения родительского интерфейса RealEstateCore и его родительского интерфейса от иерархии расширенных интерфейсов. Этот подход позволяет совместно использовать отраслевую онтологию и дополнения.
Чтобы расширить отрасль ontology, создайте собственные интерфейсы, расширяющие интерфейсы в онтологии отрасли, и добавьте новые возможности в расширенные интерфейсы. Для каждого интерфейса, который требуется расширить, создайте новый интерфейс. Расширенные интерфейсы записываются в DTDL (см . раздел DTDL для расширенных интерфейсов далее в этом документе).
После расширения части иерархии, показанной выше, расширенная иерархия будет выглядеть следующим образом. Здесь расширенный интерфейс пространства добавляет свойство drawingId
, которое будет содержать идентификатор, связывающий цифровой двойник с трехмерным чертежом. Кроме того, интерфейс Конференц-зала добавляет online
свойство, которое будет содержать состояние конференц-зала в Интернете. По наследованию интерфейс Конференц-зала содержит все возможности интерфейса Конференц-связи RealEstateCore, а также все возможности расширенного интерфейса пространства.
Вам не нужно расширять каждый интерфейс в отрасли ontology, только те, где необходимо добавить новые возможности. Например, если необходимо добавить новую возможность, например arterial
свойство в интерфейс Hallway, можно расширить этот интерфейс, не расширяя другие интерфейсы, которые также расширяются из Room.
Связи с расширенными интерфейсами
Расширенные интерфейсы также можно использовать в качестве целевого объекта для связей, даже если связь изначально моделировается для целевого базового интерфейса. Например, в онтологии RealEstateCore на основе DTDL интерфейс квартиры содержит связь с именем , которая предназначена для интерфейса комнаты (показана на схеме ниже). Это позволяет создать граф помещений для создания квартиры.
В зависимости от части иерархии помещений из предыдущего раздела, цифровой двойник квартиры может включать двойников типа комнаты, и Холлуэй является расширением Комнаты (поэтому квартира может включать коридоры). Это также означает, что квартира может включать расширенный коридор с arterial
свойством, потому что расширенный коридор подсчитывается как коридор, как он ссылается на первоначальные отношения.
Использование расширенной иерархии пространства
При создании цифровых двойников с помощью расширенной иерархии пробелов модель каждого цифрового двойника будет одной из расширенной иерархии пространства (а не исходной отрасли онтологии) и будет включать все возможности из отрасли онтологии и расширенные интерфейсы через наследование интерфейсов.
Каждая модель цифрового двойника будет интерфейсом от расширенной иерархии, как показано на блок-схеме ниже.
При запросе цифровых двойников с использованием идентификатора модели (оператор IS_OF_MODEL
) следует использовать идентификаторы модели из расширенной иерархии. Например, SELECT * FROM DIGITALTWINS WHERE IS_OF_MODEL('dtmi:com:example:Office;1')
.
Возврат к исходной онтологии
В некоторых случаях вы расширяете отраслевую онтологию широко распространенным способом для большинства пользователей онтологии. В этом случае рассмотрите возможность дополнения своих расширений к первоначальной онтологии. Каждая онтология имеет другой процесс для публикации, поэтому ознакомьтесь со сведениями о публикации в репозитории GitHub онтологии.
DTDL для новых интерфейсов
DTDL для новых интерфейсов, которые расширяются непосредственно из отраслевой онтологии, будут выглядеть следующим образом.
{
"@id": "dtmi:com:example:FocusRoom;1",
"@type": "interface",
"extends": "dtmi:digitaltwins:rec_3_3:building:Office;1",
"@context": "dtmi:dtdl:context;2"
}
DTDL для расширенных интерфейсов
DTDL для расширенных интерфейсов, ограниченных вышеописанной частью, будут выглядеть следующим образом.
[
{
"@id": "dtmi:com:example:Space;1",
"@type": "Interface",
"extends": "dtmi:digitaltwins:rec_3_3:core:Space;1",
"contents": [
{
"@type": "Property",
"name": "drawingid",
"schema": "string"
}
],
"@context": "dtmi:dtdl:context;2"
},
{
"@id": "dtmi:com:example:Room;1",
"@type": "Interface",
"extends": [
"dtmi:digitaltwins:rec_3_3:core:Room;1",
"dtmi:com:example:Space;1"
],
"@context": "dtmi:dtdl:context;2"
},
{
"@id": "dtmi:com:example:ConferenceRoom;1",
"@type": "Interface",
"extends": [
"dtmi:digitaltwins:rec_3_3:building:ConferenceRoom;1",
"dtmi:com:example:Room;1"
],
"contents": [
{
"@type": "Property",
"name": "online",
"schema": "boolean"
}
],
"@context": "dtmi:dtdl:context;2"
},
{
"@id": "dtmi:com:example:Office;1",
"@type": "Interface",
"extends": [
"dtmi:digitaltwins:rec_3_3:building:Office;1",
"dtmi:com:example:Room;1"
],
"@context": "dtmi:dtdl:context;2"
},
{
"@id": "dtmi:com:example:FocusRoom;1",
"@type": "Interface",
"extends": "dtmi:com:example:Office;1",
"@context": "dtmi:dtdl:context;2"
}
]
Следующие шаги
Продолжайте путь разработки моделей на основе онтологий: полный путь разработки модели.