4.2 SKOS RDFグラフでの推論の実行

SKOS RDFグラフでの推論の実行は、RDFグラフでの推論の実行に似ています。

SKOS RDFグラフを作成するには、RDFグラフの作成と同じ手順(SEM_APIS.CREATE_RDF_GRAPH)を使用します。RDFグラフの場合と同様に、SKOS RDFグラフにデータをロードできます。

1つ以上のSKOS RDFグラフの新しい関係を推論するには、SEM_APIS.CREATE_INFERRED_GRAPHプロシージャをシステム定義のルールベースSKOSCOREとともに使用します。たとえば、次のようにします。

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

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

4.2.1 SKOS RDFグラフおよび推論グラフの検証

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

例4-2では、SKOS推論グラフを検証します。

例4-2 SKOS推論グラフの検証

set serveroutput on
declare
  lva sem_longvarchararray;
  idx int;
begin
  lva := sem_apis.validate_inferred_graph(sem_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_INFERRED_GRAPHの起動によって、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'));