4 Simple Knowledge Organization System (SKOS)のサポート

Simple Knowledge Organization System (SKOS)データ・モデルのコア・サブセットに基づいて推論を実行できます(これは、シソーラス、分類スキーム、分類学、その他のタイプの統制ボキャブラリを表す場合に特に役立ちます)。

SKOSは、RDFやOWLを含む標準のセマンティクWebテクノロジを基盤とし、これによって知識組織化システムの形式意味論の定義およびアプリケーション間でのセマンティク共有が容易になります。

SKOSの機能は、すべてではありませんが、そのほとんどがサポートされます(仕様の詳細は、http://www.w3.org/TR/skos-reference/を参照)。

約40個のSKOS固有の語句が、RDFセマンティク・グラフ・サポートに含まれています(skos:broaderskos:relatedMatchskos:Conceptなど)。SKOSの公理トリプルが100個以上追加されて、SKOSセマンティクの基本が網羅されています。ただし、SKOSの仕様に記述されている整合性条件に関するサポートは含まれていません。

SKOSベースの推論を実行するには、次の例に示すように、SEM_APIS.CREATE_ENTAILMENTプロシージャへのコールでrulebases_inパラメータにシステム定義のSKOSCOREルールベースを指定します。

EXECUTE sem_apis.create_entailment('tstidx',sem_models('tst'), sem_rulebases('skoscore'), network_owner=>'RDFUSER', network_name=>'NET1');

例4-1では、Turtle形式で、簡単な電子機器スキームと2つの関連概念(カメラとデジタル・カメラ)を定義しています。その意味は単純で、RDFで表現されています。これは、他のRDFおよびOWLデータと同様にOracle Databaseで管理できます。

例4-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.

4.1 サポート対象およびサポート対象外のSKOSセマンティクス

この項では、SKOSセマンティクについて、Oracle Databaseでサポートされる機能とサポートされない機能について説明します。

4.1.1 サポートされるSKOSセマンティクス

ラベル用に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サブプロパティ・チェーン構成要素を使用して実装できます。プロパティ・チェーンの処理の詳細は、「プロパティ・チェーンの処理」を参照してください。

4.1.2 サポートされないSKOSセマンティクス

SKOSセマンティクの次の機能はサポートされません。

  • S12およびS51: 関連する述語のrdfs:rangeは、RDFプレーン・リテラルのクラスです。これらの述語の目的語値が本当にプレーン・リテラルであるかどうかのチェックは存在しませんが、アプリケーションでそのようなチェックを実行できます。

  • S14: リソースは、言語タグごとにskos:prefLabelの値を1つのみ持ちます。この整合性条件はOWL FULLセマンティクの範囲も超えており、現在のリリースでは実施されません。

  • S32: skos:memberのrdfs:rangeは、クラスskos:Conceptおよびskos:Collectionの和集合です。この整合性条件は実施されません。

  • S55、S56およびS57は、デフォルトではサポートされませんが、OWL 2サブプロパティ・チェーン構成要素を使用して実装できます(「サポートされるSKOSセマンティクス」を参照)。

4.2 SKOSモデルでの推論の実行

SKOSモデルでの推論の実行は、セマンティク・モデルでの推論の実行と同様です。

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')), network_owner=>'RDFUSER', network_name=>'NET1');

推論データには、SKOSの詳細な仕様で定義されている多くの公理が含まれます。他のシステム定義のルールベースのように、SKOSCOREは明示的なルールを持たず、サポートされるすべてのセマンティクは、実装にコーディングされています。

4.2.1 SKOSモデルおよび伴意の検証

SEM_APIS.VALIDATE_ENTAILMENTおよびSEM_APIS.VALIDATE_MODELプロシージャを使用すると、サポートされる整合性条件を検証できます。その出力には、サポートされる整合性条件(OWL 2 propertyDisjointWithS52など)によって発生する不整合が含まれます。

例4-2では、SKOS伴意を検証します。

例4-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'), network_owner=>'RDFUSER',network_name=>'NET1');
  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;
 /

4.2.2 プロパティ・チェーンの処理

SKOS S55、S56およびS57セマンティクは、デフォルトではサポートされません。ただし、OWL 2サブプロパティ・チェーン構成要素を使用して、それらのサポートを追加できます。

例4-3では、S55の必要なチェーン定義トリプルをSKOSモデルに挿入しています。挿入の後、SKOSCOREルールベースを指定するSEM_APIS.CREATE_ENTAILMENTの起動によって、S55で定義されるセマンティクが含まれます。

例4-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', 'RDFUSER', 'NET1'));
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>', 'RDFUSER', 'NET1'));
INSERT INTO tst VALUES(sdo_rdf_triple_s('tst','_:jA1', '<http://www.w3.org/1999/02/22-rdf-syntax-ns#rest>', '_:jA2', 'RDFUSER', 'NET1'));
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>', 'RDFUSER', 'NET1'));
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>', 'RDFUSER', 'NET1'));