我是否正确解读了这个"semantic web primer for object oriented developers"?



该文档指出"因此,将ack(sic(指向上面的示例,如果某事有价其他声明(或三倍("

做一个单词搜索以找到参考。

基本上,他们说" hasprice"属性的域是"产品"。这意味着所有产品都可以具有价格(到目前为止都很有意义(,但这也意味着任何具有" Hasprice"的物业的东西都可以视为"产品"。这对我来说似乎有些松散。用oop的话说,当然,他们并不是说属性" hasprice"实现"产品"界面,对吗?那将是疯狂!

如果您声明hasPrice的域是Product,则RDF和OWL都会推断具有hasPrice属性的任何内容均为Product类型。因此,在这方面,您的理解是正确的。请注意,如果在没有域的情况下定义了hasPrice,则推理器将不会进行此推断。

在本体中,如果您的Service也具有hasPrice属性,则可以推断出它是Product。如果您声明ServiceProduct不相交,则您的本体论将会有不一致。

围绕它的方法是在您的本体中引入一个代表域的类,例如HasPriceDomain,它是您hasPrice属性的所有域的结合。这将导致hasPrice属性的任何内容都被推断为类型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/scenariotestingusisionowl_v0-1-7-final.pdf.

最新更新