rdf – inmissions in protege

前端之家收集整理的这篇文章主要介绍了rdf – inmissions in protege前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个简单的本体论如下
<?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是一个互联网频道,因此仅在高级电视中提供的互联网频道和高级电视仅由富人拥有,因此约翰应该富有.但如前所述,我一直认为约翰是一个人

解决方法

我不认为你可以单独使用OWL在当前的类层次结构中表达这一点.如果我理解正确,你已经有了公理
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) &wedge; hasWatchedTelevision(?w,?television) → owns(?person,?television) .

您还可以说,观看互联网频道的电视是先进的电视.这需要一般的类公理,如第一个解决方案,但在这种情况下,它是:

inverse (hasWatchedTelevision) some (hasWatchedChannel some InternetChannel) SubClassOf AdvancedTV

这就像说

hasWatchedTelevision(?w,?television) &wedge; hasWatchedChannel(?w,?channel) &wedge; 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,而且适用于此类中的任何内容

猜你在找的HTML相关文章