使用SPIN将默认值设置为property

时间:2017-07-12 21:40:21

标签: sparql rules topbraid-composer spin-rdf

我是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 个答案:

答案 0 :(得分:1)

将SPIN用于这些目的是有意义的,因为SPIN推理引擎是TopBraid Composer免费版中唯一可用的推理引擎。

在其他TopBraid Composer版本中,适用性以及获得的结果可能会因您的inferencing configuration推理>配置推理)而异。

规则是:

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:Carex:Vehicle ?this 是一个特殊变量,它引用此类的“当前”实例。

似乎在您的情况下无法使用spl:InferDefaultValue SPIN模板,因为spl:InferDefaultValue不接受SPARQL变量作为其spl:defaultValue参数。