プロパティが順序付けられた値のセットを持たなければならないことをOWLでどのように述べるのですか?
例: プログラムにはシリーズの rdf:Seq が必要であり、シリーズにはエピソードの rdf:Seq が必要です。
http://purl.org/ontology/po/オントロジーは、代わりにプロパティhttp://purl.org/ontology/po/positionを使用します。
どちらのアプローチが優れていますか?
プロパティが順序付けられた値のセットを持たなければならないことをOWLでどのように述べるのですか? 例: プログラムにはシリーズの rdf:Seq が必要であり、シリーズにはエピソードの rdf:Seq が必要です。
OWL (DL) で作業している場合、実際には RDF コレクションを使用するべきではありません。 関係を具体化し、位置番号を含めることができれば、loopasamの答えは良いですが、RDFリストに類似したOWLで独自のリスト構造を宣言することもできます(これは、単一リンクリストのRDFエンコーディングです)。したがって、あなたは持つことができます
:series hasEpisodeList [ ex:first :episodeA ;
ex:rest [ ex:first :episodeB ;
ex:rest [ :episodeC ;
ex:rest ex:nil ] ] ] .
ただし、このアプローチの欠点は、数値情報が暗黙的であり、DL クエリを使用して再構築するのが難しいことです (ただし、SPARQL を使用するとそれほど難しくありません)。シーケンスを表現する両方のアプローチについては、オントロジー内のエンティティの順序付けと、それがリンクしている他の質問と回答でもう少し詳しく説明しています。
OWL (および RDF) でシーケンスを表現するのは難しく、順序付けされていないものの集合に関するものです。私が見つけたこれを行う最善の方法は、プロパティを介して番号を割り当てることです。その後、このインデックスを追跡し、必要に応じてそれを使用して繰り返します。
キャプチャしたいものを表す OWL オントロジーは次のようになります (Manchester 構文を使用 - .owl ファイルとして保存し、Protegeで開くことができます-#
コメントです):
Prefix: xsd: <http://www.w3.org/2001/XMLSchema#>
Prefix: owl: <http://www.w3.org/2002/07/owl#>
Prefix: : <brain#>
Prefix: xml: <http://www.w3.org/XML/1998/namespace>
Prefix: rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
Prefix: dc: <http://purl.org/dc/elements/1.1/>
Prefix: rdfs: <http://www.w3.org/2000/01/rdf-schema#>
Ontology: <brain.owl>
Datatype: xsd:int
ObjectProperty: has
Characteristics:
Transitive
# Property used to save the number in the sequence
DataProperty: episode-number
Range:
xsd:int
# Definition of a program: A program as at least a series
Class: Program
SubClassOf:
has some Series
Class: owl:Thing
# Definition of series: A series as at least one episode
Class: Series
SubClassOf:
has some Episode
Class: Episode
# Instance of episode
Individual: episode1
Types:
Episode
# Episode number
Facts:
episode-number "1"^^xsd:int
# Second instance of episode
Individual: episode2
Types:
Episode
Facts:
episode-number "2"^^xsd:int
次に、エピソードのインスタンスを繰り返し処理したいとしましょう。これは、OWL クエリで実現できますEpisode and episode-number value 1
。自分で番号を更新する必要があります。