rdf:property中的选择有限

时间:2012-11-11 14:38:58

标签: rdf semantics ontology owl rdfs

我正在编写一个描述编程语言的Ontology,但我遇到了以下问题:一种语言可能有强或弱的输入,我需要将我的模式限制为这两个选项...所以,我该怎么办是什么?

以下是我的架构示例:

:Language a rdfs:Class .

:typing a rdf:Propery ;
    rdfs:domain :Language ;
    rdfs:range ? .

提前致谢。

2 个答案:

答案 0 :(得分:4)

我不同意Eduardo Silva的回答。功能属性在函数范围内只能有一个。它可以多次使用,但是OWL推理器可以从这些三元组中获得一些蕴涵。例如,如果您有一些个人example:x1和一个功能属性:p,并且您在数据中看到了:

example:x1 :p :foo .
example:x1 :p :bar .

然后您有权推断:foo:bar 必须是同一个人,否则会违反:p的功能性质。或者,如果您通过其他方式知道:foo:bar是不同的个体,那么,鉴于上面两个额外的三元组,您的OWL模型是不一致的。

换句话说,在某些资源上为test:typing设置两个值是没关系的,只要您接着表示所表示的两种类型方案实际上是相同的。这可能不是你想要的。此外,没有什么可以阻止包含test:typing new 值的三重商店,这在原始范围描述中没有提到。例如:

:ruby a test:Language ; 
    test:typing test:duckTyping.

test:typing作为功能属性不一致。

要将属性的范围限制为某个枚举值之一,您实际需要的是OWL enumerated class。例如:

test:typing
    a owl:ObjectProperty ;
    rdfs:domain test:Language ;
    rdfs:range [
        owl:oneOf ( test:strongTyping test:weakTyping )
    ].

枚举类的扩展(允许值集)正是给定的个体集合。没有其他人被允许。

答案 1 :(得分:0)

我认为一个解决方案可以是定义一个"功能属性",这是一个限制"范围"对一个班级成员(例如:一个人有性别,性别可以是女性或男性 - 只有一个)。

这个猫头鹰看起来像这样(很快在Protege中制作):

<owl:ObjectProperty rdf:about="&test;typing">
    <rdf:type rdf:resource="&owl;FunctionalProperty"/>
    <rdfs:domain rdf:resource="&test;Language"/>
    <rdfs:range rdf:resource="&test;Type"/>
</owl:ObjectProperty>

(然后是Type,会有子类:强弱)。

希望这有帮助。