简体   繁体   English

RDFS子类:属性重新定义

[英]RDFS subclass: property redefinition

Toy example: 玩具示例:


Consider the following types: 请考虑以下类型:

  • Hamburger, Veggieburger, Component, Vegetable, Meat

Where 哪里

  • Veggieburger is subclass_of Hamburger Veggieburger HamburgerHamburger subclass_of
  • Vegetable and meat are subclasses of Component VegetablemeatComponent子类

Consider the following property: 考虑以下属性:

  • Has_component : domain = Hamburger , range = Component Has_component :域= Hamburger ,范围= Component

Now, I want to redefine Has_component on the Veggieburger and indicate that is can only contain vegetable Components . 现在,我要重新定义Has_componentVeggieburger ,并表明是只能包含植物Components

Is there a way to redefine (ie override) the property Has_component ? 有没有一种方法可以重新定义(即覆盖)属性Has_component

If you are only willing to use RDFS, then might I suggest the following: 如果您只愿意使用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.

You can add another pair domain/range axioms in RDFS, a reasoner will interpret the actual range as the intersection of the two classes, Component & VeggieComponent, which in this instance is ok. 您可以在RDFS中添加另一个对域/范围公理,推理机会将实际范围解释为Component和VeggieComponent这两个类的交集,在这种情况下可以。 In some cases, that'd be undesirable, so keep that in mind. 在某些情况下,这是不可取的,因此请记住这一点。

You could also do this with OWL & a restriction to get what you want, ala 您也可以使用OWL和获取所需内容的限制来执行此操作,

VeggieBurger subClassOf some(HasComponent, VeggieComponent) VeggieBurger subClassOf一些(HasComponent,VeggieComponent)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM