Предложение для простой структуры онтологии

Я новичок в мире RDF, RDFS и OWL, и я пытаюсь построить свой небольшой пример структуры онтологии.

Я собрал некоторую информацию о растениях, в частности, я думал о первом уровне разделения, основанном на том, «насколько высоким может быть растение» (пожалуйста, позвольте мне передать эту фразу, я делаю очень простую онтологию, которая не на 100% в реальном мире правильно, просто используя его для понимания OWL), разделив суперкласс растительность на 3 подкласса, которые называются травянистые растения, куст и дерево.

Теперь эти классы различаются по высоте объектов в них, поэтому я подумал о создании 3 свойств (по одному для каждого) с одинаковым именем: "hasHeight", в котором в зависимости от класса они имеют определенное ограничение, например (> 6 метров ) для деревьев или (> = 1,5 & ‹= 6 метров) для кустарников.

Решение, о котором я думал:

Растительность
* L Травянистое растение со свойством hasHeight (‹1,5m)
* L Кустарник со свойством hasHeight (> = 1,5 м & ‹= 6 м)
* L Дерево с свойство hasHeight (> 6 м)

Я уверен, что это неправильный подход к решению этой проблемы, и мне нужна помощь, чтобы лучше понять, как я могу структурировать эту информацию.


person The BigBoss    schedule 10.09.2018    source источник
comment
Сначала объясните, почему OWL - это язык веб-онтологий.   -  person nicomp    schedule 10.09.2018
comment
@nicomp несколько не по теме, но обоснование, данное рабочей группой, состоит в том, что он назван в честь персонажа Совы в Винни-Пухе А. А. Милна, который был очень мудр и мог написать свое собственное имя: WOL.   -  person Jeen Broekstra    schedule 11.09.2018


Ответы (1)


В манчестерском синтаксисе:

Prefix: : <https://stackoverflow.com/q/52263807#>

Ontology: <https://stackoverflow.com/q/52263807>

Class: Vegetation
#    DisjointUnionOf: Herbaceous_plant, Shrub, Tree

DataProperty: has_height
    Domain: Vegetation
    Range: xsd:decimal[>= 0.0]
    Characteristics: Functional
    Annotations: rdfs:comment "in meters"@en

Class: Herbaceous_plant
    EquivalentTo: # Vegetation and
        has_height exactly 1 xsd:decimal[>= 0.0 , < 1.5]

Class: Shrub
    EquivalentTo: # Vegetation and 
        has_height exactly 1 xsd:decimal[>= 1.5 , <= 6.0]

Class: Tree
    EquivalentTo: # Vegetation and
        has_height exactly 1 xsd:decimal[> 6.0]

Individual: tree1
    Facts: has_height 7.0

# Individual: tree2
#     Types: Tree, Shrub

Откройте его в Protégé, проверьте элементы в иерархии классов откройте вкладку Сущности> Классы, затем выберите Reasoner> Начать рассуждение и снова проверьте их.

На самом деле, закомментированные строки не нужны, чтобы:

  • классифицировать tree1 как Tree, или
  • сделать онтологию недействительной (сделать ее несовместимой) tree2 индивидуумом.
person Stanislav Kralin    schedule 11.09.2018
comment
Большое спасибо за ответ, если бы я мог спросить, как все должно быть изменено, если бы я включил возможность для растения быть экземплярами 2 из 3 классов, но сохраняя те же условия высоты для классов ?? Пример: могу ли я утверждать, что лавровое растение может быть одновременно деревом и кустарником, используя эту структуру? приведет ли это к дублированию записей для 2 классов? - person The BigBoss; 11.09.2018
comment
В общем, отдельный человек может принадлежать к нескольким классам (однако, не в вышеупомянутой онтологии, которая в этом смысле довольно жесткая и будет несовместимой в этом случае. - person Stanislav Kralin; 11.09.2018
comment
Большое спасибо за ваш любезный ответ и вашу помощь, сэр! - person The BigBoss; 11.09.2018