Oracleで作成したセマンティックモデルでセマンティック関連のSQLを実行して、Oracleデータベースのセマンティック機能を調べようとしていました。しかし、私はそれを機能させることができず、これに関する情報はほとんどありません。
プロシージャの機能は単純で、sparqlクエリから結果セットを取得します。
CREATE OR REPLACE PROCEDURE PROC_MERGE_PATHWAY_SEM AS
TYPE c_type IS REF CURSOR;
semCursor c_type;
p1 VARCHAR2(40);
p2 VARCHAR2(40);
interCount INTEGER;
BEGIN
OPEN semCursor FOR
'SELECT p1, p2, COUNT(g) as interCount
FROM TABLE (sem_match (
"{?p1 <http://example.com/test.owl#relates_to> ?g . ?p2 <http://example.com/test.owl#relates_to> ?g }",
sem_models("pathway"),
null,
null,
null))';
LOOP
FETCH semCursor INTO p1, p2, interCount;
EXIT WHEN semCursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(p1||','||p2||','||interCount);
END LOOP;
/*
FOR records IN semCursor LOOP
DBMS_OUTPUT.PUT_LINE('test');
END LOOP; */
END PROC_MERGE_PATHWAY_SEM;
コンパイルエラーは次のとおりです。
ORA-00972:識別子が長すぎます
ORA-06512:「SYSTEM.PROC_MERGE_PATHWAY_SEM」の9行目
ORA-06512:2行目
カーソルステートメントでラップされたsem_match構文エラーが原因なのか、Oracle11g2のバグが原因なのかわかりません。誰かがこれを手伝ってくれませんか?ありがとう。