2016-09-08 3 views
0

Это вопрос о OWL (веб-онтологическом языке). Могут быть некоторые ошибки терминов, поскольку я очень новичок.OWL: Как обратиться к свойствам владельца?

Я хочу представить живопись как Картина класс.

  • Картина имеет свойство TargetSurface чей диапазон является поверхности Класс:
    • поверхности имеет свойства SurfaceColor (диапазон: Цвет) и т.д.
  • Картина имеет свойство TargetColor, чей диапазон Цвет класс.

Теперь я хочу представить цель живописи как свойство Картина. Было бы что-то вроде: свойство Painting.Objective имеет диапазон, который является экземпляром Изменение класса (скажем, Change1), которая затрагивает свойства Change1.What = TargetSurface.SurfaceColor и Change1.ToWhat = TargetColor.

Мой вопрос состоит в том, что Цель имеет в виду свойства Картина (Картина является держателем Objective; упомянутые свойства Painting.TargetSurface.SurfaceColor и Painting.TargetColor). Как мы можем представить это в OWL? Уродливое решение будет представлять свойства Change1 as xsd: string; Change1.What = "parent.TargetSurface.SurfaceColor" и Change1.ToWhat = "parent.TargetColor". Есть ли лучшие решения?

Обратите внимание, что Painting.TargetSurface и Painting.TargetColor будет упоминаться в других свойствах Картины. Так что сделайте экземпляр Change2 который относится непосредственно к Painting.TargetSurface.SurfaceColor и Painting.TargetColor не будет хорошей идеей.

Большое спасибо!

ответ

0

Вы можете сделать это с помощью «караоке» в OWL2. Punning использует тот факт, что свойства тоже объекты. Мы делаем что-то подобное при моделировании атрибутов свойств.Мы можем использовать свойство в позиции субъекта тройки при указании атрибута домена, например. TargetSurface rdfs:range Surface. Аналогичным образом можно указать rdf:Property в позиции объекта утверждения rdfs:range для вашего What. Примерное утверждение может быть Change1 What TargetColor, где Change1 - это ваша индивидуальная смена картины, What - это свойство, а TargetColor - это свойство, которое изменяется (используется здесь как объект тройки).

+0

Спасибо, что мне «каламбурная». Однако я думаю, что это не идеально. 'Change1 What TargetColor' указывает« Change1.What »является« TargetColor », но это не значит, что« TargetColor »является свойством класса, который имеет« Change1 »как свойство« Objective ». Правильно? – Akihiko

+0

Вам необходимо четко различать экземпляры/индивидуумы от свойств. Соглашение об именах диктует начало с прописной буквы для индивидуумов и классов и строчных значений для свойств. Используя это соглашение об именах, я повторяю свой предыдущий пример как «Изменить1, что targetColor». 'Change1' является индивидуумом класса' Change'. 'what' является свойством с доменом' Change' и range 'rdf: Property'. 'targetColor' - это ваша собственность с доменом' Painting' и range 'TargetSurface'. Утверждение указывает, что «Изменение1» относится к изменению цвета целевой поверхности живописи. –

0

Из ответа @Jess решение пришло мне в голову.

Мы готовим два общих класса. Holder класс (свойства Context, HeldVia) относится к классу, который содержит класс Context как свойство HeldVia. Ref класс (свойства A, B) относится к классу, который принадлежит A как собственность B (т. Е. Как оператор A.B).

Тогда мы можем представить Painting.Objective следующим образом. Информативное представление будет:

Painting.Objective = Change1 
Change1.What = Ref(Ref(Holder(Change1,Objective),TargetSurface),SurfaceColor) 
Change1.ToWhat = Ref(Holder(Change1,Objective),TargetColor) 

Обратите внимание, что Holder(Change1,Objective) относится к Painting поскольку Painting держит Change1 как Objective собственности.

Более формально, выше будет представлена ​​как:

Painting.Objective = Change1 
Holder1.Context = Change1 
Holder1.HeldVia = Objective 
Ref1.A = Holder1 
Ref1.B = TargetSurface 
Ref2.A = Ref1 
Ref2.B = SurfaceColor 
Ref3.A = Holder1 
Ref3.B = TargetColor 
Change1.What = Ref2 
Change1.ToWhat = Ref3