Выравнивание двух онтологий с помощью "адаптера"

Проще говоря, у меня есть доменная онтология (D), выраженная в OWL, которая описывает устройства, их возможности, конфигурации. Кроме того, для каждого поставщика я хотел бы иметь онтологию для конкретного поставщика (V), которая будет связана с доменом. Вопрос в том, как выровнять D и V? Возможно ли оставить V как можно ближе к условиям поставщика или просто подклассы классов D к V (и, возможно, сделать то же самое для свойств данных и свойств объектов)? Идея состоит в том, что приложение использует онтологию D для запросов, а механизмы вывода максимально скрывают специфику поставщика.

Первый вариант кажется более логичным (в конце концов, семантическая технология заключается во взаимосвязи), но я могу предвидеть некоторые несоответствия в некоторых типах данных. Например, один поставщик может выражать уровень заряда батареи в процентах, другой использует такие слова, как высокий, средний, низкий. Я не уверен, как привести такие данные к общему знаменателю, используя OWL. Там могут быть даже более сложные случаи, требующие применения регулярных выражений и любого сценария, который обычно выполняется вуду. (Также интересно узнать, использовать ли свойства данных напрямую или добавить еще один уровень косвенности путем "обертывания" свойств данных со свойствами объектов и концепциями для каждого типа данных, чтобы быть более подготовленными к типизированному типу).

Другими словами, кажется, что входные данные должны быть предварительно обработаны перед входом в экосистему RDF... Или, может быть, есть другие возможности?

(для тех, кто стремится быстро пометить вопрос как дубликат, я не спрашиваю что-то вроде отображения между двумя онтологиями, а скорее устраиваю "выравнивание" как предварительную обработку против более богатого "шаблона адаптера" в самом OWL)

1 ответ

Решение

В общем, вы бы соединили две онтологии, создав новую онтологию O, которая импортирует как D, так и V, и определяет группу аксиом, касающихся классов и свойств внутри них.

Первый вариант кажется более логичным (в конце концов, семантическая технология заключается во взаимосвязи), но я могу предвидеть некоторые несоответствия в некоторых типах данных. Например, один поставщик может выражать уровень заряда батареи в процентах, другой использует такие слова, как высокий, средний, низкий. Я не уверен, как привести такие данные к общему знаменателю, используя OWL.

Это на самом деле случай, который вы могли бы обработать в OWL. Например, предположим, что у V1 есть свойство объекта hasPowerLevel, которое связывает Battery с одним из индивидуумов High, Medium и Low. Предположим, что V2 имеет свойство типа данных hasPercentageRemaining, которое связывает PowerCell с целым числом в диапазоне [1 100]. Сначала вы определите отношения между Battery и PowerCell. Это может быть любое из следующего, например, или что-то еще полностью. Это будет зависеть от конкретной семантики классов.

Аккумулятор ⊑ PowerCell
PowerCell ⊑ Аккумулятор
PowerCell ≡ Аккумулятор
Аккумулятор ⊑ PowerCell ⊓ ∃ имеет источник питания -1

Тогда вам придется связать свойства. Это может быть по линии

(значение hasPowerLevel высокое) ≡ (hasPercentageRemaining some integer [> = 66])
(значение hasPowerLevel Medium) ≡ (hasPercentage, оставаясь целым числом [<= 66,> = 33])
(значение hasPowerLevel Низкое) ≡ (hasPercentage, оставаясь целым числом [<= 33])

Это всего лишь один пример, но он показывает, что вы действительно можете многое сделать из этого "моста" в OWL. hasPowerLevel

Там могут быть даже более сложные случаи, требующие применения регулярных выражений и любого сценария, который обычно выполняется вуду. (Также интересно узнать, использовать ли свойства данных напрямую или добавить еще один уровень косвенности путем "обертывания" свойств данных со свойствами объектов и концепциями для каждого типа данных, чтобы быть более подготовленными к несоответствию типов).

Эти фасеты типов данных OWL (например, как мы указали диапазоны целых чисел) также могут обрабатывать ограничения регулярных выражений. Тем не менее, это правда, что часто бывает проще выполнить некоторое количество промежуточных соединений, прежде чем объединять все в OWL. Здесь могут быть полезны правила SWRL, а также возможность понизить уровень до уровня RDF и выполнить некоторую обработку на основе правил с помощью SPARQL или SPIN.

Хотя в этой области проводится множество исследований, на самом деле не существует какой-либо волшебной пули или решения, которое бы работало повсюду. Все, что претендует на универсальное применение, будет настолько высокого уровня, что его практическое применение потребует ответа на большинство вопросов, которые вы уже задавали. Существуют некоторые общие методологии, которые могут быть полезны, но нам действительно нужны некоторые конкретные ситуации, чтобы помочь с ними.

Другие вопросы по тегам