<?xml version="1.0"?> <!DOCTYPE rdf:RDF [ <!ENTITY owl "http://www.w3.org/2002/07/owl#" > <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" > <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" > <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-Syntax-ns#" > <!ENTITY assignment "http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#" > ]> <rdf:RDF xmlns="http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#" xml:base="http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:assignment="http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-Syntax-ns#"> <owl:Ontology rdf:about="http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment"/> <!-- /////////////////////////////////////////////////////////////////////////////////////// // // Object Properties // /////////////////////////////////////////////////////////////////////////////////////// --> <!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#channel_of --> <owl:ObjectProperty rdf:about="&assignment;channel_of"> <rdfs:domain rdf:resource="&assignment;Channels"/> <rdfs:range rdf:resource="&assignment;Television"/> <owl:inverSEOf rdf:resource="&assignment;has_channels"/> </owl:ObjectProperty> <!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#has_channels --> <owl:ObjectProperty rdf:about="&assignment;has_channels"> <rdfs:range rdf:resource="&assignment;Channels"/> <rdfs:domain rdf:resource="&assignment;Television"/> </owl:ObjectProperty> <!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#has_inet_connection --> <owl:ObjectProperty rdf:about="&assignment;has_inet_connection"> <rdfs:range rdf:resource="&assignment;InternetConnection"/> <rdfs:domain rdf:resource="&assignment;Person"/> </owl:ObjectProperty> <!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#has_television --> <owl:ObjectProperty rdf:about="&assignment;has_television"> <rdfs:domain rdf:resource="&assignment;Person"/> <rdfs:range rdf:resource="&assignment;Television"/> <owl:inverSEOf rdf:resource="&assignment;ownes_by"/> </owl:ObjectProperty> <!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#internet_connection_owned_by --> <owl:ObjectProperty rdf:about="&assignment;internet_connection_owned_by"> <rdfs:domain rdf:resource="&assignment;InternetConnection"/> <rdfs:range rdf:resource="&assignment;Person"/> <owl:inverSEOf rdf:resource="&assignment;has_inet_connection"/> </owl:ObjectProperty> <!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#ownes_by --> <owl:ObjectProperty rdf:about="&assignment;ownes_by"> <rdfs:range rdf:resource="&assignment;Person"/> <rdfs:domain rdf:resource="&assignment;Television"/> </owl:ObjectProperty> <!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#watched_by --> <owl:ObjectProperty rdf:about="&assignment;watched_by"> <rdfs:domain rdf:resource="&assignment;Channels"/> <rdfs:range rdf:resource="&assignment;Person"/> <owl:inverSEOf rdf:resource="&assignment;watches"/> </owl:ObjectProperty> <!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#watches --> <owl:ObjectProperty rdf:about="&assignment;watches"> <rdfs:range rdf:resource="&assignment;Channels"/> <rdfs:domain rdf:resource="&assignment;Person"/> </owl:ObjectProperty> <!-- /////////////////////////////////////////////////////////////////////////////////////// // // Data properties // /////////////////////////////////////////////////////////////////////////////////////// --> <!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#yh --> <owl:DatatypeProperty rdf:about="&assignment;yh"/> <!-- /////////////////////////////////////////////////////////////////////////////////////// // // Classes // /////////////////////////////////////////////////////////////////////////////////////// --> <!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#Advanced --> <owl:Class rdf:about="&assignment;Advanced"> <rdfs:subClassOf rdf:resource="&assignment;Coloured"/> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="&assignment;ownes_by"/> <owl:allValuesFrom rdf:resource="&assignment;Rich"/> </owl:Restriction> </rdfs:subClassOf> </owl:Class> <!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#Antena --> <owl:Class rdf:about="&assignment;Antena"> <rdfs:subClassOf rdf:resource="&assignment;Channels"/> </owl:Class> <!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#BlackAndWhite --> <owl:Class rdf:about="&assignment;BlackAndWhite"> <rdfs:subClassOf rdf:resource="&assignment;Television"/> </owl:Class> <!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#CRT --> <owl:Class rdf:about="&assignment;CRT"> <rdfs:subClassOf rdf:resource="&assignment;Coloured"/> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="&assignment;ownes_by"/> <owl:allValuesFrom rdf:resource="&assignment;Mid"/> </owl:Restriction> </rdfs:subClassOf> </owl:Class> <!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#Channels --> <owl:Class rdf:about="&assignment;Channels"/> <!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#Coloured --> <owl:Class rdf:about="&assignment;Coloured"> <rdfs:subClassOf rdf:resource="&assignment;Television"/> </owl:Class> <!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#High --> <owl:Class rdf:about="&assignment;High"> <rdfs:subClassOf rdf:resource="&assignment;InternetConnection"/> </owl:Class> <!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#Internet --> <owl:Class rdf:about="&assignment;Internet"> <rdfs:subClassOf rdf:resource="&assignment;Channels"/> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="&assignment;channel_of"/> <owl:allValuesFrom rdf:resource="&assignment;Advanced"/> </owl:Restriction> </rdfs:subClassOf> </owl:Class> <!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#InternetConnection --> <owl:Class rdf:about="&assignment;InternetConnection"/> <!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#LCD --> <owl:Class rdf:about="&assignment;LCD"> <rdfs:subClassOf rdf:resource="&assignment;Coloured"/> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="&assignment;ownes_by"/> <owl:someValuesFrom rdf:resource="&assignment;Rich"/> </owl:Restriction> </rdfs:subClassOf> </owl:Class> <!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#LED --> <owl:Class rdf:about="&assignment;LED"> <rdfs:subClassOf rdf:resource="&assignment;Coloured"/> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="&assignment;ownes_by"/> <owl:someValuesFrom rdf:resource="&assignment;Rich"/> </owl:Restriction> </rdfs:subClassOf> </owl:Class> <!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#Medium --> <owl:Class rdf:about="&assignment;Medium"> <rdfs:subClassOf rdf:resource="&assignment;InternetConnection"/> </owl:Class> <!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#Mid --> <owl:Class rdf:about="&assignment;Mid"> <rdfs:subClassOf rdf:resource="&assignment;Person"/> <owl:disjointWith rdf:resource="&assignment;Rich"/> </owl:Class> <!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#Person --> <owl:Class rdf:about="&assignment;Person"/> <!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#Rich --> <owl:Class rdf:about="&assignment;Rich"> <rdfs:subClassOf rdf:resource="&assignment;Person"/> </owl:Class> <!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#Television --> <owl:Class rdf:about="&assignment;Television"/> <!-- /////////////////////////////////////////////////////////////////////////////////////// // // Individuals // /////////////////////////////////////////////////////////////////////////////////////// --> <!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#John --> <owl:NamedIndividual rdf:about="&assignment;John"/> <!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#SLTA --> <owl:NamedIndividual rdf:about="&assignment;SLTA"> <rdf:type rdf:resource="&assignment;Advanced"/> </owl:NamedIndividual> <!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#Youtube --> <owl:NamedIndividual rdf:about="&assignment;Youtube"> <rdf:type rdf:resource="&assignment;Internet"/> <watched_by rdf:resource="&assignment;John"/> </owl:NamedIndividual> </rdf:RDF> <!-- Generated by the OWL API (version 3.4.2) http://owlapi.sourceforge.net -->
现在,我要推断约翰是一个富人.我尝试了各种限制,但只是我得到了“约翰是一个人”.
我最初的本体论思想就是这样,如果有人从他的电视上观看互联网频道,那么他就拥有先进的电视,高级电视只有富人拥有.
现在在我们的实例中,约翰观看YouTube,YouTube是一个互联网频道,因此仅在高级电视中提供的互联网频道和高级电视仅由富人拥有,因此约翰应该富有.但如前所述,我一直认为约翰是一个人
解决方法
John watches YouTube YouTube a InternetChannel InternetChannel availableOn only AdvancedTV AdvancedTV inverse owns only RichPerson
但无法推断出约翰一个(拥有一些AdvancedTV)的中间推断会让你得出约翰一个RichPerson的结论.
如果你有一个额外的公理“如果有人P观看某个频道C,那么P拥有一些电视T和C可用于T”,那么推理将起到如下作用:“自John看到YouTube以来,John必须拥有一些YouTube提供的电视节目.由于YouTube是一个互联网频道,电视必须是一个先进的电视.由于约翰将拥有一台先进的电视,他将成为一个富有的人.“
OWL的限制
但是,我不认为这个公理可以用OWL表达.描述逻辑(其中OWL是一个)是一阶逻辑的子集,并且只能表示仅使用两个变量的一阶句子.上面的公理似乎需要三个:
>∀p,c:watch(p,c)→(∃t:拥有(p,t)& wedge; availableOn(c,t))
我无法以这样的方式重写它只使用两个变量,所以我不认为它可以用OWL表示.这意味着您需要更改本体中的某些内容才能使其正常工作.我认为,有几个选择:
>您可以转换频道类层次结构并引入一些个人来表示频道类型.
>除了使用仅与人和频道相关的手表关系外,您还可以使用与人,他们观看的频道以及他们观看频道的电视相关的三地关系手表.
第一个选项可能会更快一点,但我认为第二个选项从长远来看更灵活,更好地代表了手头的信息,并使整体表示更清晰.
代表个人的频道类型
如果您将频道子类层次结构更改为一个频道类型集合,例如,而不是YouTube上的InternetChannel,那么您可以说YouTube具有频道类型互联网,那么您可以说
watches some (hasChannelType value Internet) SubClassOf owns some AdvancedTV
其中说“如果有人看到有频道类型互联网的东西,那么有人拥有一台先进的电视.”由于约翰看YouTube,而YouTube有频道类型的互联网,那么约翰拥有一台先进的电视.由于先进的电视仅由富人拥有,约翰必须是富人.
这个公理是一个普通的公理.它左侧没有简单的类名,而是类表达式.这些并不常见,但正如Being complex on the left-hand-side: General Concept Inclusion所讨论的那样,它们在某些时候非常有用.
该文章提供了在Protégé中创建它们的示例.要在Protégé中输入通用类公理,请转到“活动本体”选项卡,然后在其中找到“通用类公理”选项卡.然后你可以逐字输入公理,它应该是这样的:
将手表换成手表
或者,您可以将二元关系手表替换为3位关系watchOn,这将使一个人与他们观看的频道和他们观看的电视相关联.这具有很好的优点,即在个人拥有多个电视机的情况下,一些仍然是原始的而另一些是先进的. (第一个解决方案只是说,如果有人观看互联网频道,那么他们拥有一台先进的电视,但它并没有捕捉到该人使用该电视观看互联网频道这一事实.)更换二元关系手表(人,通道)与第三手表(人,频道,电视)我们遵循W3C工作组注释Defining N-ary Relations on the Semantic Web中给出的方法.我们引入一个类(不是属性)watchOn,其每个实例代表watchOn关系的出现,以及三个属性,hasWatcher,hasWatchedChannel,hasWatchedTelevision,它们将watchesOn的实例分别与关系中涉及的人物,频道和电视相关联. watchOn的实例通常是空白节点.例如,watchesOn(John,YouTube,JohnsTelevision)可以在RDF中表示为:
[] a :watchesOn ; :hasWatcher :John ; :hasWatchedChannel :YouTube ; :hasWatchedTelevision :JohnsTelevision .
通过这种表示,我们可以陈述许多有用的事实.例如,如果一个人在电视上看东西,然后他们拥有那台电视,我们断言:
inverse(hasWatcher) o hasWatchedTelevision SubPropertyOf owns
这就像说
hasWatcher(?w,?person) ∧ hasWatchedTelevision(?w,?television) → owns(?person,?television) .
您还可以说,观看互联网频道的电视是先进的电视.这需要一般的类公理,如第一个解决方案,但在这种情况下,它是:
inverse (hasWatchedTelevision) some (hasWatchedChannel some InternetChannel) SubClassOf AdvancedTV
这就像说
hasWatchedTelevision(?w,?television) ∧ hasWatchedChannel(?w,?channel) ∧ InternetChannel(?channel) → AdvancedTV(?television) .
有了这两个公理,我们可以推断John拥有JohnsTelevision,而JohnsTelevision则是AdvancedTV.如果我们再增加一个阶级公理,即如果一个人拥有先进的电视,那么他们就是富人,即
owns some AdvancedTV SubClassOf RichPerson
然后我们可以推断约翰是一个RichPerson.
这种表现很好,因为使用限制,我们可以断言,约翰在某些电视上观看YouTube,而没有说明他在哪个电视上观看.这需要向John添加一个类型断言,即:
John a inverse hasWatcher some (hasWatchedChannel value YouTube and hasWatchedTelevision some Television)
这说约翰在一些电视上看YouTube,但没说电视.通过我们早先的公理,推理者仍然可以推断,无论电视是什么,它必须是一台先进的电视,而约翰必须拥有它.然后推理者仍然可以推断约翰是一个有钱人.
这甚至更进一步.我们甚至不需要指定John观看的频道,而只是指出它是一个互联网频道:
John a inverse hasWatcher some (hasWatchedChannel some InternetChannel and hasWatchedTelevision some Television)
而推理者仍然可以推断约翰是富人.最重要的是,类表达式
inverse hasWatcher some (hasWatchedChannel some InternetChannel and hasWatchedTelevision some Television)
由那些在某些电视上观看某些互联网频道的人组成.推理者可以告诉我们这个类表达式是RichPerson的子类,这意味着这些推理不仅适用于John,而且适用于此类中的任何内容: