クラス間でモデル化された知識を使用したい。たとえば、車とバスは 4 輪、自転車は 2 輪をモデル化しました。ここで、自転車が転倒する可能性があることを表現したいと思います (バランスを保っていないと、無能なドライバーです)。インスタンス「CB450」、subClassOf Bike を追加すると、ルールは推論を有効にする必要があります: 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>