Установить значение по умолчанию для свойства с помощью SPIN
Я новичок в SPIN. Интересно, имеет ли смысл использовать его для следующих целей. Скажем, у меня есть следующая иерархия классов:
ex:Vehicle
ex:Car
ex:Sedan
Некоторые классы имеют свойство owl:equivalenClass
установить какое-то значение, например:
ex:Vehicle
owl:equivalentClass wd:MeanOfTransportation
ex:Sedan
owl:equivalentClass wd:Sedan
В этом случае owl:equivalentClass
не установлено в значение, оно должно принимать значение своего родительского класса. В приведенном выше примере:
ex:Car
owl:equivalentClass wd:MeanOfTransportation
Можно ли это сделать с помощью SPIN, в моем случае - с помощью TopBraid?
1 ответ
Для этих целей имеет смысл использовать SPIN, поскольку механизм вывода SPIN является единственным механизмом вывода, доступным в бесплатной версии TopBraid Composer.
В других выпусках TopBraid Composer соответствие, а также полученный результат могут различаться в зависимости от конфигурации вашего вывода (Inferences> Configure Inferencing).
Правило таково:
rdfs:Class spin:rule [
rdf:type sp:Construct ;
sp:text """
CONSTRUCT {
?this owl:equivalentClass ?equivalentClass .
}
WHERE {
?this rdfs:subClassOf ?superClass .
?superClass owl:equivalentClass|^owl:equivalentClass ?equivalentClass .
FILTER NOT EXISTS {
?this owl:equivalentClass|^owl:equivalentClass [] .
}
} """
] .
Обратите внимание, что это правило SPIN прилагается к rdfs:Class
: класс, который создает все эти экземпляры ex:Car
, ex:Vehicle
являются. ?this
это специальная переменная, которая ссылается на "текущий" экземпляр этого класса.
Кажется, что spl:InferDefaultValue
Шаблон SPIN не может быть использован в вашем случае, потому что spl:InferDefaultValue
не принимает переменные SPARQL в качестве spl:defaultValue
аргумент.