【问题标题】:Limited choices in a rdf:propertyrdf:property 中的有限选择
【发布时间】:2012-10-31 04:37:00
【问题描述】:

我正在制作一个描述编程语言的本体,但我有以下问题:一种语言可以有强类型或弱类型,我需要将我的模式限制为这两个选项......那么,我该怎么做那个?

这是我的架构示例:

:Language a rdfs:Class .

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

提前致谢。

【问题讨论】:

    标签: rdf semantics ontology owl rdfs


    【解决方案1】:

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

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

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

    换句话说,可以在某个资源上为test:typing 设置两个值,只要您随后要求表示的两种类型方案实际上是相同的。这可能不是你想要的。此外,没有什么可以阻止包含 test:typingnew 值的三重存储,原始范围描述中未提及该值。例如:

    :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 )
        ].
    

    枚举类的扩展(一组允许值)正是给定的个体集合。不允许其他人。

    【讨论】:

    • 你好 Ian... 很好的答案,我会更加关注 w3c 文档,但是,你说得对,我需要那些约束,就像 owl:oneOf 可以做的那样。谢谢!
    • 嗨,Ian,我确实看到了使用 owl:oneOf 的意义。但是,我仍然很难看到使用 FunctionalProperty 的问题,因为每种语言只有一种类型(假设这是一个严格的要求)。根据规范:“对于每个实例 x 只能具有一个(唯一)值 y 的属性,即不能有两个不同的值 y1 和 y2 使得 (x,y1) 和 (x,y2) 对都是此属性的实例。”。我的问题是我们什么时候可以使用功能属性? (另外,我们可以允许 owl:oneOf 没有为同一个人指定两次吗?)
    • 这取决于你想要做什么。当我阅读 OP 的问题时,他希望能够模拟 test:typing 的范围包含一组固定的不同标识符,而没有其他标识符。将属性声明为函数式可能很有用而且是个好主意,但并不能解决这些问题中的任何一个。
    【解决方案2】:

    我认为一种解决方案可以是定义一个“功能属性”,这是一个将“范围”限制为类的一个成员的属性(例如:Person hasGender Gender,其中性别可以是女性或男性 - 仅限一)。

    这在 owl 中看起来像这样(在 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>
    

    (那么类型,会有子类:强和弱)。

    希望这会有所帮助。

    【讨论】:

    • 非常感谢,我阅读了关于 owl:FunctionalPropery 的 OWL 文档,它看起来正是我所需要的……一个问题:你来自巴西吗?
    • 这不是owl:FunctionalProperty的正确用法。请参阅我的替代答案。
    猜你喜欢
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    • 2016-04-18
    • 2013-12-27
    相关资源
    最近更新 更多