2015-12-11 8 views
0

Я хочу использовать знания, которые моделируются между классами. Например. Я смоделировал автомобиль и автобус с 4 колесами, велосипед 2 колеса. Теперь я хочу сказать, что велосипед может опрокинуться (если вы не держите их в равновесии - некомпетентный водитель). Если я добавлю экземпляр «CB450», subClassOf Bike, правило должно включить аргументы: может (CB450, Tip). Путь:SWRL - использование знаний из классов

Type(Cb450,Bike) and has(Bike,TwoWheels) and can(TwoWheels,Tip) -> can (CB450,Tip) 

я не нашел способ выразить это правило в SWRL, или правила Jena. Есть ли возможность?

Я знаю, что его можно моделировать по-разному, но мне нужно использовать отношения классов для правил в случаях.

Я использую Protege 5.16 с таблеткой 2.3.1. Смотрите пример ниже онтология

Prefix: owl: <http://www.w3.org/2002/07/owl#> 
Prefix: rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
Prefix: xml: <http://www.w3.org/XML/1998/namespace> 
Prefix: xsd: <http://www.w3.org/2001/XMLSchema#> 
Prefix: rdfs: <http://www.w3.org/2000/01/rdf-schema#> 

Ontology: <http://www.semanticweb.org/vehicle> 
ObjectProperty: <http://www.semanticweb.org/vehicle#has> 
ObjectProperty: <http://www.semanticweb.org/vehicle#can> 

Class: <http://www.semanticweb.org/vehicle#Car> 

SubClassOf: 
    <http://www.semanticweb.org/vehicle#Vehicle>, 
    <http://www.semanticweb.org/vehicle#has> some <http://www.semanticweb.org/vehicle#FourWheels> 

Class: <http://www.semanticweb.org/vehicle#Vehicle> 
Class: <http://www.semanticweb.org/vehicle#Bike> 

SubClassOf: 
    <http://www.semanticweb.org/vehicle#Vehicle>, 
    <http://www.semanticweb.org/vehicle#has> some  <http://www.semanticweb.org/vehicle#TwoWheels> 

Class: <http://www.semanticweb.org/vehicle#FourWheels> 

SubClassOf: 
    <http://www.semanticweb.org/vehicle#Property> 
Class: <http://www.semanticweb.org/vehicle#TwoWheels> 

SubClassOf: 
    <http://www.semanticweb.org/vehicle#can> some  <http://www.semanticweb.org/vehicle#Tip>, 
    <http://www.semanticweb.org/vehicle#Property> 

Class: <http://www.semanticweb.org/vehicle#Property> 
Class: <http://www.semanticweb.org/vehicle#Tip> 

SubClassOf: 
    <http://www.semanticweb.org/vehicle#Property> 

Individual: <http://www.semanticweb.org/vehicle#CB450> 

Types: 
    <http://www.semanticweb.org/vehicle#Bike> 

Individual: <http://www.semanticweb.org/vehicle#Tip> 

Types: 
    <http://www.semanticweb.org/vehicle#Tip> 

ответ

1

Основываясь на том, как вы объяснили эту проблему она выглядит как «CB40» не является подклассом велосипед, а индивидуальный тип велосипеда. Так что у вас есть класс автомобиль, свойство данных hasWheels на автомобиле и булева canTip собственности на автомобиле, вы можете написать правило SWRL как

Vehicle(?x)^hasWheels(?x, 2) -> canTip(?x, true) 

, что переводится как «транспортное средство с двумя колесами может перевернуться». «X» - любое лицо указанного типа. Поэтому, если вы создадите класс Bike в качестве подкласса Vehicle и отдельного CB40 этого класса и зададите все соответствующие свойства данных, аргумент присваивает свойство canTip true для CB40

+0

Кстати, онтология написана в Protege , так что все должно быть хорошо. – 2Application

+0

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

+0

Я согласен с тем, что ваши предложения работают, но каждый человек должен иметь свойство данных «hasWheels», чего я хочу избежать. Я пытался выразить это с помощью отношений между классами. Я хотел бы создать людей, которые наследуют такие вещи от своего типа класса без явной модели для каждого байка, который у него есть 2 колеса. Возможно ли это? – 2Application

 Смежные вопросы

  • Нет связанных вопросов^_^