: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 .
и вы можете получить результаты, как это:
Это выглядит очень перспективным, но у нас есть трудности, воспроизводящие скриншот. Является ли фрагмент черепахи свалкой из Протежа? Мы копируем/вставляем его в файл и загружаем его в Protege. Но мы не можем получить вывод о том, что вы показываете на скриншоте. Не могли бы вы также объяснить, почему вы сделали исключение/включение подклассом Finding? Одышка будет подклассом Finding в нашем сценарии. – Wolfgang
В вашем сценарии у вас были домены hasNegative и hasPositive - исключение и включение. но hasNegative и hasPositive являются под-свойствами hasFinding. Поэтому всякий раз, когда у вас есть x hasNegative y, вы должны сделать вывод, что «x hasFinding y». Из них вы можете сделать вывод, что «y a Exclusion» и «y a Finding». Таким образом, казалось, что большинство ваших исключений и инклюзии в конечном итоге станут находками. Сделав поиск несвязного объединения Исключения и включения, рассудитель может сделать вывод о том, что любое обнаружение должно быть либо Включение, либо Исключение. –
@Wolfgang - единственная конфигурация, на которой я делал это, была под Reasoner> Configure. Там вы можете настроить Protege, чтобы показать больше выводов разумного, но я не думаю, что это было актуально в этом случае (но вы все равно могли бы попробовать). –