<Insert Picture Here>
Ontologien und Semantische Netze aus Sicht der Oracle Datenbank
Karin Patenge | Oracle Deutschland B.V. & Co. KG | [email protected]
DOAG Konferenz 2011 | 16. November 2011 | Nürnberg
<Insert Picture Here>
Agenda
• Motivation
• Semantische Netze: Warum eigentlich ...?
• Die W3C-Standards: RDF, OWL und andere
• Die RDF Engine in der Oracle-Datenbank
• Semantische Technologie nutzen
• Setup
• Daten laden
• Rulebases erstellen
• Abfragen
• Fragen & Antworten
• Weiterführende Informationen
Motivation und Konzepte
“Semantic technologies include software standards
and methodologies that are aimed at providing more
explicit meaning from the information that’s at our
disposal.”
• The CIO’s Guide to Semantics • Dave McComb, Semantic Arts, Inc.
Herausforderungen in Bezug auf
Informationen in Unternehmen
Quelle: Oracle Kunde
Die Vision semantisch vernetzter Daten Kollaboratives Wissen
Netz von Informationen, welches von Maschinen intelligent verarbeitet werden kann.
•Intelligent
•Relevant
•Contextual
•Interconnected
•Solves Problems
•Answers Questions
•Easily Searchable
•Let Information follow you
Semantische Netze
• Warum also?
Semantische Netze Wozu eigentlich?
• Speicherung von "Experten-Wissen"
• Vielzahl verschiedener "Objekte"
• Ständige Erweiterungen/Veränderungen
• Hinterlegung von Folgerungen durch "Regeln"
• Ergänzung zu relationalen Tabellen
• Flexible Speicherung von Aussagen
• Nutzung automatischer Schlußfolgerungen
• Erweiterung von Abfragemöglichkeiten
Arbeit mit semantischen Netzen Typischer Workflow
• Entity Extraction & Transformation
• Modellierung der Ontologie
• Skripting (ETL)
Daten vorbereiten
Laden, Abfragen &
Schlußfolgern
Applikationen & Analyse
•Bulk Loader
•Rulebases erstellen
•Inferencing
•SQL & SPARQL Abfragen
•Skalierbarkeit & Sicherheit
•Semantischer Index
•Visualisierung
•Social Network Analyse
•Data Mining
•Link-Analyse
•Metadaten Registrierung
OLTP
Dokumente
RSS, Mail
andere
QUELLEN
Partner Werkzeuge
Partner / Oracle Werkzeuge
Semantische Netze Warum nun in der Datenbank ...?
• Kombination mit strukturierten Daten
• Expertenwissen im semantischen Netz
• Relationale Daten in Tabellen
• Beispiel:
• Semantisches Netz speichert Beziehungen zwischen
Personen (z.B. soziale Netze)
• Tabellen speichern die Kontaktdaten der Personen
In der Datenbank können die (semantischen)
Abfragemöglichkeiten einer Ontologie mit relationalen Tabellen kombiniert werden.
Semantische Netze lassen sich so noch besser nutzen.
Grundlegende Konzepte
• Alles, was beschrieben werden kann durch eine einzigartige
Beziehung zu etwas anderem
• Ulrike Schwinn ist auf der
DOAG Konferenz
• Die DOAG Konferenz findet statt
in Nürnberg
• Karin Patenge hält einen Vortrag
zu Semantischen Technologien
• S-P-O wird “Triple”
genannt
• Triples müssen eindeutig
sein
• Sichergestellt über
Uniform Resource Identifier (URI)
Subjekt (S) Prädikat (P) Objekt (O)
Ulrike
Schwinn
ist auf DOAG Konferenz
DOAG
Konferenz
findet statt in Nürnberg
DOAG Ist Veranstalter
der
DOAG Konferenz
Karin
Patenge
hält einen
Vortrag zu
Semantischen
Technologien
Hans Klein ist angemeldet
für Vortrag zu
Semantischen
Technologien
Semantische
Technologien
findet statt
am/um
16. November
2011 um 9 Uhr
Die W3C-Standards
RDF, OWL und andere
RDF Grundlagen
• RDF = Resource Description Framework
• W3C-Standard
• Beziehungen ...
• Subjekt
• Prädikat
• Objekt
Subjekt Prädikat Objekt
Friedrich I. Preussen König von
RDF Datenmodell Grundlagen
• Datenmodellierung als flexibles Netzwerk
• Knoten und gerichtete Graphen
• Subjekte und Objekt als Knoten
• Prädikate als gerichtete Graphen
Friedrich I. Preussen König von
Friedrich Wilhelm I.
RDF Datenmodell Auszeichnungssprachen
• XML: RDF Schema
• N-Triples
(Flat files)
RDF ... ist nicht alles Technologie-Stack für das Semantic Web
• RDF: Grundliegende
Beschreibungssprache
• Aussagen (Triples)
• Subject, Predicate, Object
• OWL: Modellierungssprache
für semantische Netze
• Klassendefinitionen
• Kardinalitäten
OWL: Ontology Web Language
• Erweiterung von RDF
• Modellierung von ...
• Klassen
• Eigenschaften
• Domänen
• Vererbung
• Synonyme
• ...
Die RDF Engine in der Oracle-Datenbank
RDF und die Oracle-Datenbank
• Implementierung ab Oracle10gR2
• Bestandteil der Spatial Option
• OWL-Unterstützung ab Oracle11g
• Grundlage: Spatial Network Data Model
• Datenspeicherung als
Netzwerk
• Nutzung der
Netzwerkalgorithmen
Oracle Spatial RDF Begriffe
• RDF Network
• RDF Model
• RDF Query
• Rulebase (Inferencing)
• Rules Index (Entailment)
RDF-Daten in der Oracle Datenbank Speicherung von "Triples"
• Netzwerk-Datenmodell • Subjekt und Objekt = Knoten im Netzwerk
• Prädikate = Graphen im Netzwerk
• Erlaubte Knotentypen ... • URI's
• Einfache Literale, 'typed'-Literale
• Leere Knoten
• Voraussetzung zur Speicherung eines Triples • Subjekt = URI oder Leerer Knoten
• Prädikat = URI
• Objekt = Beliebig: URI, Literal, Leerer Knoten
Oracle Spatial RDF Daten-Layout
• Datenspeicherung in Systemtabellen
• Erzeugt durch
• SEM_APIS.CREATE_SEM_NETWORK (Oracle11g)
• SDO_RDF.CREATE_RDF_NETWORK (Oracle10g)
• Eigentümer: MDSYS
• Zugriff über "Referenzen-Tabelle" im User-Schema
Tablespace RDFDATA Tablespace USERS
Subjekt
Prädikat
Objekt
Referenzen-Tabelle
Semantische Technologien nutzen
Oracle RDF-Engine Am Beispiel „Hohenzollern Familie"
Friedrich I. Elisabeth Henriette von Hessen-Kassel
Sophie Charlotte von Hannover
Luise Dorothee
Friedrich Wilhelm I.
Bruder von
Sophie Dorothea von Hannover
... Elisabeth Christine von Braunschweig-Bevern
Preussen
Männlich
Friedrich II.
Friedrich August
Weiblich Vater von Mutter von
Friedrich Wilhelm II.
König von
Onkel von
verheiratet mit
Friedrich Ludwig
Oracle Spatial RDF Schritt 1
• Erstellen des RDF Netzwerks
• Als DBA und als einmalige Aktion
• Eigene Tablespace empfohlen -- 1. Default Tablespace einrichten
drop tablespace rdf_data including contents and datafiles;
create tablespace rdf_data
datafile '/oracle/u02/ORCL/rdf_data01.dbf' size 128M reuse
autoextend on next 64M maxsize unlimited
segment space management auto;
-- 2. Temp Tablespace einrichten
drop tablespace rdf_temp including contents and datafiles;
create temporary tablespace rdf_temp
tempfile '/oracle/u02/ORCL/rdf_temp01.dbf' size 128M reuse
autoextend on next 32M maxsize unlimited;
begin
execute sem_apis.create_sem_network(tablespace_name => 'rdf_data');
end;
Oracle Spatial RDF Schritt 2
• Tabelle erstellen
• Speicherung von Referenzen auf die RDF-Daten
Datentyp SDO_RDF_TRIPLE_S
• ID-Spalte (Primary Key) empfohlen
-- Tabelle für Triples anlegen
create table hohenzollern_rdf_data (
id number,
triple sdo_rdf_triple_s,
constraint pk_hohenzollern_triple primary key (id)
);
Oracle Spatial RDF Schritt 3
• RDF Modell erstellen
• Angabe der "Referenzen-Tabelle"
-- Tabelle für Triples anlegen
create table hohenzollern_rdf_data (
id number,
triple sdo_rdf_triple_s,
constraint pk_hohenzollern_triple primary key (id)
);
-- RDF Modell erstellen
begin
sem_apis.create_sem_model(
model_name => 'hohenzollern',
table_name => 'hohenzollern_rdf_data',
column_name => 'triple');
end;
Oracle Spatial RDF Schritt 4
• Daten laden
• 1. Variante: SQL Insert
• 2. Variante: N-Triple*-Loader
• 3. Variante: SQL*Loader (Bulk load)
„Friedrich I" (http://www.example.org/hohenzollern/Friedrich_I) ist Vater (http://www.example.org/hohenzollern/fatherOf) von „Friedrich Wilhelm I" (http://www.example.org/hohenzollern/Friedrich_Wilhelm_I)
INSERT INTO hohenzollern_rdf_data (id, triple) VALUES (1,
SDO_RDF_TRIPLE_S('hohenzollern',
'http://www.example.org/hohenzollern/Friedrich_I', -- Subjekt
'http://www.example.org/hohenzollern/fatherOf', -- Prädikat
'http://www.example.org/hohenzollern/Friedrich_Wilhelm_I')); -- Objekt
* http://www.w3.org/TR/rdftestcases/#ntrip_grammar
-- Laden über SQL*Loader
sqlldr userid=nciuser/nciuser
control=%ORACLE_HOME%/md/demo/network/rdf_demos/bulkload.ctl
data=nci_z.nt direct=true skip=0 load=1000000 discardmax=0 bad=d0.bad
discard=d0.rej log=d0.log errors=100000000
Oracle Spatial RDF Daten laden über Bulk Loader
• 3. Variante: Empfohlen • Daten in Staging Tabelle laden (bspw. SQL*Loader)
• SEM_APIS.BULK_LOAD_FROM_STAGING_TABLE
-- Daten laden in Staging Tabelle
drop table stable;
create table stable (
RDF$STC_sub varchar2(4000) not null,
RDF$STC_pred varchar2(4000) not null,
RDF$STC_obj varchar2(4000) not null,
RDF$STC_sub_ext varchar2(64),
RDF$STC_pred_ext varchar2(64),
RDF$STC_obj_ext varchar2(64),
RDF$STC_canon_ext varchar2(64)
);
-- National Cancer Institute (NCI) Daten aus Staging in RDF Tabelle
begin
sem_apis.bulk_load_from_staging_table(
'nci', -- Model name
'nciuser', -- Table owner
'stable'); -- Table name
end;
Oracle Spatial RDF Ergebnis Daten laden über Bulk Loader
Oracle Spatial RDF Schritt 5
• Geladene Daten ansehen
• Abfrage mit SQL ...
• GET_TRIPLE()
• GET_SUBJECT()
• GET_PROPERTY()
• GET_OBJECT()
-- Einfache Abfragen
select sem_apis.get_model_id('nci') as model_id from dual;
select a.triple.get_triple() AS triple FROM nci_rdf_data a;
select distinct s.triple.get_subject() AS subject FROM nci_rdf_data s;
select distinct p.triple.get_property() AS property FROM nci_rdf_data p;
select distinct o.triple.get_object() AS obj FROM nci_rdf_data o;
Oracle Spatial RDF Schritt 6
• Schlußfolgerungen erstellen (Inferencing)
• Rulebase = Hinterlegte logische Folgerungen
• Indizierbar ...
Friedrich I. Friedrich Wilhelm I.
Friedrich II. Vater von Vater von
Wenn
Dann
Friedrich I. Friedrich II. Großvater von
Oracle Spatial RDF Rulebase erstellen
-- General inferencing im Hohenzollern Modell
begin
sem_apis.create_rulebase(
rulebase_name => 'hohenzollern_rb');
end;
insert into mdsys.semr_hohenzollern_rb values (
'grandparent_rule',
'(?x :fatherOf ?y) (?y :fatherOf ?z)',
NULL,
'(?x :grandParentOf ?z)',
sem_aliases(sem_alias('','http://www.example.org/hohenzollern/')));
insert into mdsys.semr_hohenzollern_rb values (
'uncle_rule',
'(?x :brotherOf> ?y)(?y :fatherOf ?z)',
NULL,
'(?x :uncleOf ?z)',
sem_aliases(sem_alias('','http://www.example.org/hohenzollern/')));
Oracle Spatial RDF Schritt 7
• Rulebase indizieren
• Vorberechnung der schlußgefolgerten Triple
• 11g: SEM_APIS.CREATE_ENTAILMENT
• 10g: SDO_RDF.CREATE_RULES_INDEX
-- Rulebase indizieren
begin
sem_apis.create_entailment(
'hohenzollern_rb_idx',
sem_models('hohenzollern'),
sem_rulebases('RDFS','hohenzollern_rb'));
-- RDFS inferencing
sem_apis.create_entailment(
'hohenzollern_rdfs_idx',
sem_models('hohenzollern'),
sem_rulebases('RDFS'));
end;
Abfragen im RDF Modell Ein Beispiel
• Table-Funktionen • 11g: SEM_MATCH
• 10g: SDO_RDF_MATCH
• Beispiel: Selektiere alle Großväter und deren Enkel
-- Select all grandfathers and their grandchildren from the family model.
-- Use inferencing from both the RDFS and family_rb rulebases.
SELECT
x grandfather,
y grandchild
FROM
TABLE(
SEM_MATCH(
'(?x :grandParentOf ?y) (?x rdf:type :Male)',
SEM_Models('hohenzollern'),
SEM_Rulebases('RDFS', 'hohenzollern_rb'),
SEM_ALIASES(SEM_ALIAS('','http://www.example.org/hohenzollern/')),
NULL));
Abfragen im RDF Modell Allgemein
Mit oder ohne Rulebases
– Berücksichtigung hinterlegter "Folgerungen"
Enge Integration mit SQL
– Verknüpfung/Join mit relationalen Daten
– Zusätzliche Filter per SQL
– Weiterverarbeitung der Ergebnisse
Ontologie-unterstützte Anfragen
• Semantische Abfragen
• ... auf relationalen Datenbeständen
• ... unter Nutzung einer Ontologie
• Anwendungsbeispiel:
• "Gib mir alle Patienten mit Knochenbrüchen"
• Die Tabelle enthält aber:
Oberschenkelbruch, Ellenbruch, etc.
• SQL-Operatoren
• SEM_RELATED
• SEM_DISTANCE
Ontologie-unterstützte Anfragen NCI Thesaurus
Tabelle mit Patientendaten
Ontologie
Ontologie-unterstützte Anfragen Abfrage und Ergebnis
select
id, name, round(age) as age,
diagnosis, SEM_DISTANCE(123)
from patients_data
where sem_related(
diagnosis,
'<http://www.w3.org/2000/01/rdf-schema#subClassOf>',
'<http://www.mindswap.org/2003/nciOncology.owl#Upper_Extremity_Fracture>',
sem_models('nci'), sem_rulebases('owlprime'), 123) = 1
ORDER BY SEM_DISTANCE(123) asc;
-- Semantischen Index auf Patienten-Tabelle
create index nciIndex on patients_data(diagnosis)
indextype is mdsys.sem_indextype parameters
('ONTOLOGY_MODEL(NCI), RULEBASE(owlprime)');
50 Zeilen abgerufen
-- Im Vergleich dazu:
select * from patients_data where diagnosis like '%Upper_Extremity_Fracture%';
-- 14 records
Zusammenfassung
• Oracle RDF Engine • Speicherung und Abfrage von Ontologien
• Folgerungen (Inference) durch indizierbare Regeln
• Flexibles Datenmodell: Ontologien können dynamisch wachsen
• Nutzen der Oracle-Datenbank • Einheitliche Administration
• Zugriff mit SQL
• Kombination mit relationalen Daten möglich
• Skalierbarkeit / Hochverfügbarkeit
Weiterführende Informationen
Nützliche Links
• OTN Webseiten
http://www.oracle.com/technetwork/database/options/semantic-
tech/index.html
• Öffentliche Foren
https://forums.oracle.com/forums/forum.jspa?forumID=269
• Oracle By Example (OBE)
http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/11g/r1/p
rod/datamgmt/nci_semantic_network/nci_Semantics_les01.htm
• World Wide Web Consortium: Standards and Drafts
http://www.w3.org/TR/