Rdf 我解释过这个吗;面向对象开发人员语义web入门”;正确地

Rdf 我解释过这个吗;面向对象开发人员语义web入门”;正确地,rdf,semantic-web,rdfs,Rdf,Semantic Web,Rdfs,声明“因此,将ack(原文如此)指向上述示例,如果某事物有价格,那么它可以作为产品实例处理,即使它参与了其他声明(或三重声明)” 进行单词搜索以查找引用 基本上,他们是在说房产“hasPrice”的领域是“产品”。这意味着所有产品都可以有价格(到目前为止是有意义的),但也意味着任何具有“hasPrice”属性的产品都可以被视为“产品”。这对我来说似乎有点松散。用面向对象的术语来说,它们当然并不意味着任何具有“hasPrice”属性的东西都实现了“产品”接口,是吗?那太疯狂了 如果您声明hasPr

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

进行单词搜索以查找引用


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

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

在本体中,如果您有一个
服务
,它也有一个
hasPrice
属性,它将推断它是一个
产品
。如果您声明
服务
产品
是不相交的,则本体中会出现不一致

一种解决方法是在本体中引入一个类来表示域,比如说
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的详细信息,请参阅。有关方法转换的详细信息,请参阅的第5章。

如果您声明
hasPrice
的域是
Product
,RDF和OWL都会推断任何具有
hasPrice
属性的对象都属于
Product
类型。所以在这方面你的理解是正确的。请注意,如果定义的
hasPrice
没有域,推理器将不会进行此推断

在本体中,如果您有一个
服务
,它也有一个
hasPrice
属性,它将推断它是一个
产品
。如果您声明
服务
产品
是不相交的,则本体中会出现不一致

一种解决方法是在本体中引入一个类来表示域,比如说
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的详细信息,请参阅。有关方法翻译的详细信息,请参见。

的第5章。因此,让我们想出一些我们自然不会认为是产品,但同样通用的东西(在我写这篇文章时,我发现我很难想出真正的东西,所以…)让我们称之为abc。abc存在,有价格,并且不是自然地被认为是产品,这是否表明我们的对象模型(本体论?)不一致,需要比产品或abc更基本的东西来表示有价格的东西?不,不一定。正如我所说,接口不容易转化为本体论。你能详细说明一下“不必要”吗?你能想象一种类似于上述情况的情况吗?在这种情况下,“abc”不被视为“产品”,但有一个价格,但不知何故,让一个推理者推断属于“abc”类的东西也属于“产品”类是可以接受的?@ChechyLevas你的想法是错误的。事实上,你已经给了它一个价格,这意味着根据定义,它是一种产品。如果“abc”不是一种产品,你就不应该给它定价,或者,如果事实证明你的宇宙中存在有价格但不是产品的东西,你就不应该将你的财产领域设置为产品。@JeenBroekstra这不是我在第一次评论中建议的吗?那么让我们想出其他的东西,我们不会自然而然地认为它是一种产品,但它同样是通用的(当我写这篇文章时,我发现我很难想出真正的东西,所以…)让我们称之为abc。abc存在,有价格,并且不是自然地被认为是产品,这是否表明我们的对象模型(本体论?)不一致,需要比产品或abc更基本的东西来表示有价格的东西?不,不一定。正如我所说,接口不容易转化为本体论。你能详细说明一下“不必要”吗?你能想象一种类似于上述情况的情况吗?在这种情况下,“abc”不被视为“产品”,但有一个价格,但不知何故,让一个推理者推断属于“abc”类的东西也属于“产品”类是可以接受的?@ChechyLevas你的想法是错误的。事实上,你已经给了它一个价格,这意味着根据定义,它是一种产品。如果“abc”不是一种产品,你就不应该给它定价,或者,如果事实证明有这样的产品