簡體   English   中英

SWRL-使用課堂知識

[英]SWRL - using knowledge from classes

我想使用在類之間建模的知識。 例如,我模擬了一輛汽車,一輛公共汽車有4個輪子,自行車有2個輪子。 現在,我想表達的是,自行車可能會翻倒(如果您不能保持平衡-無能的駕駛員)。 如果添加實例“ CB450”(自行車的子類),則規則應啟用推理: can(CB450,Tip) 方式:

Type(Cb450,Bike) and has(Bike,TwoWheels) and can(TwoWheels,Tip) -> can (CB450,Tip)

我找不到任何方法可以在SWRL或Jena規則中表達此規則。 有可能嗎?

我知道可以對其建模,但是我需要在實例中為規則使用類關系。

我將Protege 5.16與顆粒2.3.1一起使用。 請參閱下面的示例本體

Prefix: owl: <http://www.w3.org/2002/07/owl#>
Prefix: rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
Prefix: xml: <http://www.w3.org/XML/1998/namespace>
Prefix: xsd: <http://www.w3.org/2001/XMLSchema#>
Prefix: rdfs: <http://www.w3.org/2000/01/rdf-schema#>

Ontology: <http://www.semanticweb.org/vehicle>
ObjectProperty: <http://www.semanticweb.org/vehicle#has>
ObjectProperty: <http://www.semanticweb.org/vehicle#can>

Class: <http://www.semanticweb.org/vehicle#Car>

SubClassOf: 
    <http://www.semanticweb.org/vehicle#Vehicle>,
    <http://www.semanticweb.org/vehicle#has> some <http://www.semanticweb.org/vehicle#FourWheels>

Class: <http://www.semanticweb.org/vehicle#Vehicle>
Class: <http://www.semanticweb.org/vehicle#Bike>

SubClassOf: 
    <http://www.semanticweb.org/vehicle#Vehicle>,
    <http://www.semanticweb.org/vehicle#has> some     <http://www.semanticweb.org/vehicle#TwoWheels>

Class: <http://www.semanticweb.org/vehicle#FourWheels>

SubClassOf: 
    <http://www.semanticweb.org/vehicle#Property>
Class: <http://www.semanticweb.org/vehicle#TwoWheels>

SubClassOf: 
    <http://www.semanticweb.org/vehicle#can> some        <http://www.semanticweb.org/vehicle#Tip>,
    <http://www.semanticweb.org/vehicle#Property>

Class: <http://www.semanticweb.org/vehicle#Property>
Class: <http://www.semanticweb.org/vehicle#Tip>

SubClassOf: 
    <http://www.semanticweb.org/vehicle#Property>

Individual: <http://www.semanticweb.org/vehicle#CB450>

Types: 
    <http://www.semanticweb.org/vehicle#Bike>

Individual: <http://www.semanticweb.org/vehicle#Tip>

Types: 
    <http://www.semanticweb.org/vehicle#Tip>

根據您解釋問題的方式,看起來“ CB40”不是Bike的子類,而是Bike類型的個人。 因此,假設您有一個Vehicle類,在Vehicle上有一個data屬性hasWheels,在Vehicle上有一個布爾屬性canTip,則可以將SWRL規則寫為

Vehicle(?x) ^ hasWheels(?x, 2) -> canTip(?x, true)

意思是“帶兩個輪子的車輛可以翻倒”。 ?x是指定類型的任何個體。 因此,如果您將“自行車”類創建為“車輛”的子類,並創建該類的單個CB40並設置所有相關數據屬性,則推理程序將為CB40分配canTip屬性為true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM