Simple Knowledge Organization System (SKOS)データ・モデルのコア・サブセットに基づいて推論を実行できます(これは、シソーラス、分類スキーム、分類学、その他のタイプの統制ボキャブラリを表す場合に特に役立ちます)。SKOSは、RDFやOWLを含む標準のセマンティクWebテクノロジを基盤とし、これによって知識組織化システムの形式意味論の定義およびアプリケーション間でのセマンティク共有が容易になります。
SKOSの機能は、すべてではありませんが、そのほとんどがサポートされます(仕様の詳細は、http://www.w3.org/TR/skos-reference/
を参照)。
Oracle Databaseセマンティク・テクノロジ・サポートには、約40個のSKOS固有の用語が含まれます(skos:broader
、skos:relatedMatch
、skos:Concept
など)。100個を超えるSKOSの公理トリプルが追加され、SKOSセマンティクの基本が網羅されています。ただし、SKOS仕様に記述されている整合性条件に関するサポートは含まれません。
SKOSベースの推論を実行するには、次の例のように、SEM_APIS.CREATE_ENTAILMENTプロシージャのコールでrulebases_in
パラメータにシステム定義のSKOSCORE
ルールベースを指定します。
EXECUTE sem_apis.create_entailment('tstidx',sem_models('tst'), sem_rulebases('skoscore'));
例3-1では、Turtle形式で単純な電子機器スキームと2つの関連概念(カメラとデジタル・カメラ)を定義しています。その意味は簡単で、RDFで表現されています。これは、他のRDFおよびOWLデータと同様にOracle Databaseによって管理できます。
例3-1 電子機器スキームのSKOS定義
ex1:electronicsScheme rdf:type skos:ConceptScheme; ex1:cameras rdf:type skos:Concept; skos:prefLabel "cameras"@en; skos:inScheme ex1:electronicsScheme. ex1:digitalCameras rdf:type skos:Concept; skos:prefLabel "digital cameras"@en; skos:inScheme ex1:electronicsScheme. ex1:digitalCameras skos:broader ex1:cameras.
この項では、SKOSセマンティクについて、Oracle Databaseでサポートされる機能とサポートされない機能について説明します。
ラベル用にSKOSおよびSKOS拡張で定義されている用語は、すべて認識されます。SKOSCOREルールベースが推論に選択される場合、認識される用語は次のとおりです。
skos:altLabel skos:broader skos:broaderTransitive skos:broadMatch skos:changeNote skos:closeMatch skos:Collection skos:Concept skos:ConceptScheme skos:definition skos:editorialNote skos:exactMatch skos:example skos:hasTopConcept skos:hiddenLabel skos:historyNote skos:inScheme skos:mappingRelation skos:member skos:memberList skos:narrower skos:narrowerTransitive skos:narrowMatch skos:notation skos:note skos:OrderedCollection skos:prefLabel skos:related skos:relatedMatch skos:scopeNote skos:semanticRelation skos:topConceptOf skosxl:altLabel skosxl:hiddenLabel skosxl:Label skosxl:labelRelation skosxl:literalForm skosxl:prefLabel
ほとんどのSKOS公理および定義がサポートされます(S1-S8、S10-S11、S15-S26、S28-S31、S33-S36、S38-S45、S47-S50およびS53-S54を含む)。(定義については、SKOSの詳細な仕様を参照してください。)
ほとんどのSKOS整合性条件がサポートされます(S9、S13、S27、S37およびS46を含む)。
S52は部分的にサポートされます。
S55、S56およびS57は、デフォルトではサポートされません。
S55: プロパティ・チェーン(skosxl:prefLabel, skosxl:literalForm
)は、skos:prefLabel
のサブプロパティです。
S56: プロパティ・チェーン(skosxl:altLabel, skosxl:literalForm
)は、skos:altLabel
のサブプロパティです。
S57: プロパティ・チェーン(skosxl:hiddenLabel, skosxl:literalForm
)は、skos:hiddenLabel.chains
のサブプロパティです。
ただし、S55、S56およびS57は、OWL 2サブプロパティ・チェーン構成要素を使用して実装できます。プロパティ・チェーンの処理の詳細は、3.2.2項を参照してください。
SKOSセマンティクの次の機能はサポートされません。
S12およびS51: 関連する述語のrdfs:range
は、RDFプレーン・リテラルのクラスです。これらの述語の目的語値が実際にプレーン・リテラルかどうかはチェックされませんが、アプリケーションでそのようなチェックを実行できます。
S14: リソースには、言語タグごとにskos:prefLabel
の1つの値のみが含まれます。この整合性条件は、OWL FULLセマンティクの範囲外で、現在のリリースでは実施されません。
S32: rdfs:range of skos:member
は、skos:Concept
クラスとskos:Collection
クラスの和集合です。この整合性条件は実施されません。
S55、S56およびS57: デフォルトではサポートされませんが、OWL 2サブプロパティ・チェーン構成要素を使用して実装できます(3.1.1項を参照)。
SKOSモデルを作成するには、セマンティク・モデルを作成する場合と同じプロシージャ(SEM_APIS.CREATE_SEM_MODEL)を使用します。セマンティク・モデルと同じ方法でSKOSモデルにデータをロードできます。
1つ以上のSKOSモデルの新しい関係を推論するには、SEM_APIS.CREATE_ENTAILMENTプロシージャをシステム定義のルールベースSKOSCORE
とともに使用します。次に例を示します。
EXECUTE sem_apis.create_entailment('tstidx',sem_models('tst'), sem_rulebases('skoscore'));
推論データには、SKOSの詳細な仕様で定義されている多くの公理が含まれます。他のシステム定義のルールベースのように、SKOSCOREは明示的なルールを持たず、サポートされるすべてのセマンティクは、実装にコーディングされています。
SEM_APIS.VALIDATE_ENTAILMENTおよびSEM_APIS.VALIDATE_MODELプロシージャを使用して、サポートされる整合性条件を検証できます。出力には、サポートされる整合性条件(OWL 2 propertyDisjointWith
やS52
など)によって発生する不整合が含まれます。
例3-2では、SKOS伴意を検証しています。
例3-2 SKOS伴意の検証
set serveroutput on declare lva mdsys.rdf_longVarcharArray; idx int; begin lva := sem_apis.validate_entailment(sdo_rdf_models('tstskos'), sem_rulebases('skoscore')); if (lva is null) then dbms_output.put_line('No conflicts'); else for idx in 1..lva.count loop dbms_output.put_line('entry ' || idx || ' ' || lva(idx)); end loop; end if; end; /
SKOS S55、S56およびS57セマンティクは、デフォルトではサポートされません。ただし、OWL 2サブプロパティ・チェーン構成要素を使用して、それらのサポートを追加できます。
例3-3では、S55の必要なチェーン定義トリプルをSKOSモデルに挿入しています。挿入後、SKOSCORE
ルールベースを指定するSEM_APIS.CREATE_ENTAILMENTの起動によって、S55で定義されるセマンティクが含まれます。
例3-3 S55を実装するためのプロパティ・チェーンの挿入
INSERT INTO tst VALUES(sdo_rdf_triple_s('tst','<http://www.w3.org/2004/02/skos/core#prefLabel>', '<http://www.w3.org/2002/07/owl#propertyChainAxiom>', '_:jA1')); INSERT INTO tst VALUES(sdo_rdf_triple_s('tst','_:jA1', '<http://www.w3.org/1999/02/22-rdf-syntax-ns#first>', '<http://www.w3.org/2008/05/skos-xl#prefLabel>')); INSERT INTO tst VALUES(sdo_rdf_triple_s('tst','_:jA1', '<http://www.w3.org/1999/02/22-rdf-syntax-ns#rest>', '_:jA2')); INSERT INTO tst VALUES(sdo_rdf_triple_s('tst','_:jA2', '<http://www.w3.org/1999/02/22-rdf-syntax-ns#first>', '<http://www.w3.org/2008/05/skos-xl#literalForm>')); INSERT INTO tst VALUES(sdo_rdf_triple_s('tst','_:jA2', '<http://www.w3.org/1999/02/22-rdf-syntax-ns#rest>', '<http://www.w3.org/1999/02/22-rdf-syntax-ns#nil>'));