2015-06-17 1 views
2

Мы пытаемся получить обоснование (например, HermiT в Protege), чтобы сделать вывод, что вместо утверждённого общего свойства можно использовать более конкретное под-свойство.OWL-рассуждение: Необходимые и достаточные условия для определения свойства

Классы:

- Patient 
- Finding 
    - Dyspnea 
- ObservationStatus 
    - Inclusion 
    - Exclusion 

Свойство:

- has_finding (domain: Patient, range: Finding) 
    - has_positive_finding (domain: Patient, range: Finding, Inclusion) 
    - has_negative_finding (domain: Patient, range: Finding, Exclusion) 

Если мы утверждаем следующие тройки:

:Patient1 a :Patient . 
:Patient1 :has_negative_finding :Dyspnea1 . 

рассуждающие можно сделать вывод (среди прочего), что:

:Dyspnea1 a :Finding . 
:Dyspnea1 a :Exclusion. 

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

:Patient1 a :Patient . 
:Dyspnea1 a :Dyspnea . 
:Dyspnea1 a :Exclusion . 
:Patient1 :has_finding :Dyspnea1. 

Мы хотели бы рассуждающий сделать вывод, что:

:Patient1 :has_negative_finding :Dyspnea1 . 

Мы не можем показаться, чтобы получить Protege и отшельник рисовать, что заключение и вывести тройки.

Что нам не хватает? Являются ли условия не необходимыми и достаточными для того, чтобы сделать это знание?

ответ

2
:Patient1 a :Patient . 
:Dyspnea1 a :Dyspnea . 
:Dyspnea1 a :Exclusion . 
:Patient1 :has_finding :Dyspnea1. 

Мы хотели бы рассуждающий сделать вывод, что:

:Patient1 :has_negative_finding :Dyspnea1 . 

& hellip; Что нам не хватает? Являются ли условия не необходимыми и достаточными для того, чтобы сделать это знание?

Здесь есть несколько вопросов.

Во-первых, вы не сказали, что каждое has_finding действительно соответствует одному из под-свойств. То есть, только потому, что что-то имеет, как найти, вы не знаете, что оно также имеет отрицательный или положительный результат. Находка может быть просто общим нахождением, не являясь одним из наиболее конкретных.

Во-вторых, более конкретный тип объекта не означает, что вы должны использовать более конкретное свойство.

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

Теперь, что было бы очень приятно сделать, было бы утверждать, что has_finding является объединением has_negative_finding и has_positive_finding, а затем объявляет включение и исключение непересекающимися. Тогда каждый экземпляр находки должен быть тем или иным, и вы могли бы сделать свой вывод.

Поскольку вы не можете этого сделать, вам понадобится какая-то альтернатива.Если вы используете лицо как на очных диагнозы, то вы могли бы сказать, что каждый вывод либо отрицательный вывод или положительный вывод с аксиомой как

                (обратный (hasFinding) некоторого Пациент) subClass ((обратный (имеет отрицательный характер) некоторый пациент) или (обратный (hasPositiveFinding) некоторый пациент))

, а также создание hasFinding обратного функционального, так что каждое обнаружение связано не более чем с одним пациентом. Тогда вы бы онтологию как это:

@prefix :  <http://stackoverflow.com/a/30903552/1281433/> . 
@prefix a:  <http://stackoverflow.com/a/30903552/1281433/> . 
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . 
@prefix owl: <http://www.w3.org/2002/07/owl#> . 
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . 
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . 

a:Exclusion a   owl:Class ; 
     rdfs:subClassOf a:Finding . 

a:hasNegativeFinding a  owl:ObjectProperty ; 
     rdfs:range   a:Exclusion ; 
     rdfs:subPropertyOf a:hasFinding . 

_:b0 a     owl:Restriction ; 
     owl:onProperty  a:hasPositiveFinding ; 
     owl:someValuesFrom a:Inclusion . 

a:  a  owl:Ontology . 

[ a     owl:Restriction ; 
    rdfs:subClassOf  [ a   owl:Class ; 
         owl:unionOf (_:b1 _:b0) 
         ] ; 
    owl:onProperty  a:hasFinding ; 
    owl:someValuesFrom a:Finding 
] . 

a:Finding a     owl:Class ; 
     owl:disjointUnionOf (a:Finding a:Inclusion) . 

a:patient1 a   owl:Thing , owl:NamedIndividual ; 
     a:hasFinding a:dyspnea1 . 

_:b1 a     owl:Restriction ; 
     owl:onProperty  a:hasNegativeFinding ; 
     owl:someValuesFrom a:Exclusion . 

a:hasFinding a owl:ObjectProperty . 

a:Inclusion a   owl:Class ; 
     rdfs:subClassOf a:Finding . 

a:hasPositiveFinding a  owl:ObjectProperty ; 
     rdfs:range   a:Inclusion ; 
     rdfs:subPropertyOf a:hasFinding . 

a:dyspnea1 a owl:NamedIndividual , a:Exclusion . 

и вы можете получить результаты, как это:

findings inference

+0

Это выглядит очень перспективным, но у нас есть трудности, воспроизводящие скриншот. Является ли фрагмент черепахи свалкой из Протежа? Мы копируем/вставляем его в файл и загружаем его в Protege. Но мы не можем получить вывод о том, что вы показываете на скриншоте. Не могли бы вы также объяснить, почему вы сделали исключение/включение подклассом Finding? Одышка будет подклассом Finding в нашем сценарии. – Wolfgang

+0

В вашем сценарии у вас были домены hasNegative и hasPositive - исключение и включение. но hasNegative и hasPositive являются под-свойствами hasFinding. Поэтому всякий раз, когда у вас есть x hasNegative y, вы должны сделать вывод, что «x hasFinding y». Из них вы можете сделать вывод, что «y a Exclusion» и «y a Finding». Таким образом, казалось, что большинство ваших исключений и инклюзии в конечном итоге станут находками. Сделав поиск несвязного объединения Исключения и включения, рассудитель может сделать вывод о том, что любое обнаружение должно быть либо Включение, либо Исключение. –

+0

@Wolfgang - единственная конфигурация, на которой я делал это, была под Reasoner> Configure. Там вы можете настроить Protege, чтобы показать больше выводов разумного, но я не думаю, что это было актуально в этом случае (но вы все равно могли бы попробовать). –

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