Установить значение по умолчанию для свойства с помощью 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 аргумент.

Другие вопросы по тегам