1

玩具示例:


考虑以下类型:

  • Hamburger, Veggieburger, Component, Vegetable, Meat

在哪里

  • Veggieburgersubclass_of Hamburger
  • Vegetable并且meatComponent

考虑以下属性:

  • Has_component: 域 = Hamburger, 范围 =Component

现在,我想重新定义Has_componentVeggieburger指出它只能包含蔬菜Components

有没有办法重新定义(即覆盖)属性Has_component

4

2 回答 2

3

如果您只愿意使用 RDFS,那么我可能会建议以下内容:

@prefix menu: <http://yourdomain/menu#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.

menu:Burger rdf:type rdfs:Class.

menu:Veggieburger rdf:type rdfs:Class;
                  rdfs:subClassOf menu:Burger.

menu:Hamburger rdf:type rdfs:Class;
               rdfs:subClassOf menu:Burger.

menu:Component rdf:type rdfs:Class.

menu:VeggieComponent rdf:type rdfs:Class;
                     rdfs:subClassOf menu:Component.

menu:MeatComponent rdf:type rdfs:Class;
                   rdfs:subClassOf menu:Component.

#use camel casing for property names
menu:hasComponent rdf:type rdf:Property;
                  rdfs:domain menu:Burger;
                  rdfs:range menu:Component.

menu:hasMeatComponent rdf:type rdf:Property;
                  rdfs:subPropertyOf menu:hasComponent;
                  rdfs:domain menu:MeatBurger;
                  rdfs:range menu:MeatComponent.

menu:hasVeggieComponent rdf:type rdf:Property;
                  rdfs:domain menu:VeggieBurger;
                  rdfs:subPropertyOf menu:hasComponent;
                  rdfs:range menu:VeggieComponent.
于 2012-06-08T13:10:28.930 回答
2

您可以在 RDFS 中添加另一对域/范围公理,推理器会将实际范围解释为两个类 Component 和 VeggieComponent 的交集,在这种情况下是可以的。在某些情况下,这是不可取的,所以请记住这一点。

您也可以使用 OWL 和限制来获得您想要的东西,ala

VeggieBurger subClassOf some(HasComponent, VeggieComponent)

于 2012-06-08T12:45:26.333 回答