1.6 RDFのデータ型、コンストラクタおよびメソッド
SDO_RDF_TRIPLE_Sオブジェクト型は、RDFグラフのエッジ(つまり、トリプルとクワッド)を表すために使用されます。
SDO_RDF_TRIPLE_Sオブジェクト・タイプ(_Sはストレージ)は、データベースに永続的なRDFデータを格納します。
実際のRDFデータはRDFスキーマにのみ一元的に格納されるため、SDO_RDF_TRIPLE_S型はデータに対する参照を保持します。この型には、トリプルの一部または全部を取得するためのメソッドがあります。
ノート:
空白ノードは、常に1つのRDFグラフ内で再利用されます。複数のグラフ間で再利用することはできません。SDO_RDF_TRIPLE_S型は、トリプルをデータベース表に格納するために使用されます。
SDO_RDF_TRIPLE_Sオブジェクト型には、次の属性が含まれます。
SDO_RDF_TRIPLE_S ( RDF_C_ID NUMBER, -- Canonical object value ID RDF_M_ID NUMBER, -- Model (or Model-Graph) ID RDF_S_ID NUMBER, -- Subject value ID RDF_P_ID NUMBER, -- Property value ID RDF_O_ID NUMBER) -- Object value ID
SDO_RDF_TRIPLE_S型には、RDFグラフ(またはモデル-グラフ)の名前、またはトリプルの一部(主語、プロパティまたは目的語)を取得する次のメソッドがあります。
GET_MODEL( NETWORK_OWNER VARCHAR2 DEFAULT NULL, NETWORK_NAME VARCHAR2 DEFAULT NULL) RETURNS VARCHAR2 GET_SUBJECT( NETWORK_OWNER VARCHAR2 DEFAULT NULL, NETWORK_NAME VARCHAR2 DEFAULT NULL) RETURNS VARCHAR2 GET_PROPERTY( NETWORK_OWNER VARCHAR2 DEFAULT NULL, NETWORK_NAME VARCHAR2 DEFAULT NULL) RETURNS VARCHAR2 GET_OBJECT( NETWORK_OWNER VARCHAR2 DEFAULT NULL, NETWORK_NAME VARCHAR2 DEFAULT NULL) RETURNS CLOB GET_OBJ_VALUE( NETWORK_OWNER VARCHAR2 DEFAULT NULL, NETWORK_NAME VARCHAR2 DEFAULT NULL) RETURNS VARCHAR2
例1-9に、SDO_RDF_TRIPLE_Sのメソッドをいくつか示します。
例1-9 SDO_RDF_TRIPLE_Sのメソッド
-- Find all articles that reference Article2. SELECT a.triple.GET_SUBJECT('RDFUSER','NET1') AS subject FROM RDFUSER.NET1#RDFT_ARTICLES a WHERE a.triple.GET_PROPERTY('RDFUSER','NET1') = '<http://purl.org/dc/terms/references>' AND a.triple.GET_OBJ_VALUE('RDFUSER','NET1') = '<http://nature.example.com/Article2>'; SUBJECT -------------------------------------------------------------------------------- <http://nature.example.com/Article1> -- Find all triples with Article1 as subject. SELECT a.triple.GET_SUBJECT('RDFUSER','NET1') AS subject, a.triple.GET_PROPERTY('RDFUSER','NET1') AS property, a.triple.GET_OBJ_VALUE('RDFUSER','NET1') AS object FROM RDFUSER.NET1#RDFT_ARTICLES a WHERE a.triple.GET_SUBJECT('RDFUSER','NET1') = '<http://nature.example.com/Article1>'; SUBJECT -------------------------------------------------------------------------------- PROPERTY -------------------------------------------------------------------------------- OBJECT -------------------------------------------------------------------------------- <http://nature.example.com/Article1> <http://purl.org/dc/elements/1.1/title> "All about XYZ" <http://nature.example.com/Article1> <http://purl.org/dc/elements/1.1/creator> "Jane Smith" <http://nature.example.com/Article1> <http://purl.org/dc/terms/references> <http://nature.example.com/Article2> <http://nature.example.com/Article1> <http://purl.org/dc/terms/references> <http://nature.example.com/Article3 -- Find all objects where the subject is Article1. SELECT a.triple.GET_OBJ_VALUE('RDFUSER','NET1') AS object FROM RDFUSER.NET1#RDFT_ARTICLES a WHERE a.triple.GET_SUBJECT('RDFUSER','NET1') = '<http://nature.example.com/Article1>'; OBJECT -------------------------------------------------------------------------------- "All about XYZ" "Jane Smith" <http://nature.example.com/Article2> <http://nature.example.com/Article3> -- Find all triples where Jane Smith is the object. SELECT a.triple.GET_SUBJECT('RDFUSER','NET1') AS subject, a.triple.GET_PROPERTY('RDFUSER','NET1') AS property, a.triple.GET_OBJ_VALUE('RDFUSER','NET1') AS object FROM RDFUSER.NET1#RDFT_ARTICLES a WHERE a.triple.GET_OBJ_VALUE('RDFUSER','NET1') = '"Jane Smith"'; SUBJECT -------------------------------------------------------------------------------- PROPERTY -------------------------------------------------------------------------------- OBJECT -------------------------------------------------------------------------------- <http://nature.example.com/Article1> <http://purl.org/dc/elements/1.1/creator> "Jane Smith"
親トピック: RDFグラフの概要
1.6.1 トリプルを挿入するためのコンストラクタ
次のコンストラクタ書式は、トリプルをモデル表に挿入する場合に使用できます。2つの書式の唯一の違いは、2番目の書式における目的語のデータ型がCLOBであり、非常に長いリテラルに対応できることです。
SDO_RDF_TRIPLE_S ( model_name VARCHAR2, -- Model name subject VARCHAR2, -- Subject property VARCHAR2, -- Property object VARCHAR2, -- Object network_owner VARCHAR2 DEFAULT NULL, network_name VARCHAR2 DEFAULT NULL) RETURN SELF; SDO_RDF_TRIPLE_S ( model_name VARCHAR2, -- Model name subject VARCHAR2, -- Subject property VARCHAR2, -- Property object CLOB, -- Object network_owner VARCHAR2 DEFAULT NULL, network_name VARCHAR2 DEFAULT NULL) RETURN SELF;
例1-10では、1番目のコンストラクタ書式を使用して複数のトリプルを挿入します。
例1-10 トリプルを挿入するSDO_RDF_TRIPLE_Sコンストラクタ
INSERT INTO RDFUSER.NET1#RDFT_ARTICLES VALUES ( SDO_RDF_TRIPLE_S ('articles','<http://nature.example.com/Article1>', '<http://purl.org/dc/elements/1.1/creator>', '"Jane Smith"', 'RDFUSER', 'NET1')); INSERT INTO RDFUSER.NET1#RDFT_ARTICLES VALUES ( SDO_RDF_TRIPLE_S ('articles:<http://examples.com/ns#Graph1>', '<http://nature.example.com/Article102>', '<http://purl.org/dc/elements/1.1/creator>', '_:b1', 'RDFUSER', 'NET1')); INSERT INTO RDFUSER.NET1#RDFT_ARTICLES VALUES ( SDO_RDF_TRIPLE_S ('articles:<http://examples.com/ns#Graph1>', '_:b2', '<http://purl.org/dc/elements/1.1/creator>', '_:b1', 'RDFUSER', 'NET1'));
親トピック: RDFデータの型、コンストラクタおよびメソッド