代码之家  ›  专栏  ›  技术社区  ›  Chechy Levas

我是否正确地解释了“面向对象开发人员的语义web入门”?

  •  0
  • Chechy Levas  · 技术社区  · 6 年前

    This document 声明“因此,将ack(原文如此)指向上述示例,如果某个东西有价格,则可以将其作为产品实例处理,即使它参与了其他声明(或三重声明)”

    进行单词搜索以查找引用。

    基本上,他们是在说房产“hasPrice”的领域是“产品”。这意味着所有产品都可以有一个价格(到目前为止是有道理的),但也意味着任何具有“hasPrice”属性的产品都可以被视为“产品”。这对我来说似乎有点宽松。用面向对象的术语来说,它们当然并不意味着任何具有“hasPrice”属性的东西都实现了“Product”接口,是吗?那太疯狂了!

    1 回复  |  直到 6 年前
        1
  •  2
  •   Henriette Harmse    6 年前

    如果您声明 hasPrice Product ,RDF和OWL都会推断 哈斯普莱斯 属性的类型为 产品 . 所以在这方面你的理解是正确的。请注意,如果 哈斯普莱斯 定义时没有域,推理器将不会进行此推断。

    在本体中,如果您有 Service 还有一个 哈斯普莱斯 属性,它将推断它是 产品 . 如果您声明 服务 与不相交 产品 .

    一种解决方法是在本体中引入一个类来表示域,比如 HasPriceDomain 这是你的所有领域的联合 哈斯普莱斯 所有物这将导致任何与 哈斯普莱斯 要推断为类型的属性 HasPriceDomain .

    DataProperty: hasPrice
        Domain: HasPriceDomain    
        Range: xsd:double
    
    Class: HasPriceDomain
        EquivalentTo: Product or Service
    
    Class: Product
        SubClassOf: hasPrice some xsd:double
        DisjointWith: Service
    
    Class: Service
        SubClassOf: hasPrice some xsd:double
        DisjointWith: Product
    

    从OOP的角度来看,最好将OOP类视为RDF/OWL类,将类的OOP实例视为RDF/OWL个体。

    在OOP中,接口通常指定行为(即方法),这些行为不能简单地转换为RDF/OWL。从RDF/OWL开始,最好只关注类。

    有关将OOP转换为OWL的详细信息,请参见 https://henrietteharmse.com/uml-vs-owl/ . 有关方法翻译的详细信息,请参见 https://henrietteharmse.files.wordpress.com/2017/09/scenariotestingusingowl_v0-1-7-final.pdf .