SIKB0102!? Wouter Boasson Kennis delen



Vergelijkbare documenten
Van bergen afval naar gouden bergen Deel 2: een archeologisch uitwisselingsprotocol

NHibernate als ORM oplossing

Les 2 Eenvoudige queries

AFO Invoer /output profielen

Archeologie. Digitaal werken in de archeologie

Import via NatSync. Presentatie René Merx School voor de Toekomst

AsG Informatiesessie

GeoKey en Catalog Services

gravita PSUR-C conversie en import van relaties in PSU Relatiebeheer Algemeen

Bijlage 1 Pilot Heerhugowaard en het Regionaal Archief Alkmaar

Inhoudsopgave. Module 2 Geavanceerde formulieren

Access cursus Hoofdstuk 3

DATAMODELLERING ER DIAGRAM

Tools voor canonieke datamodellering Bert Dingemans

Kennis na het volgen van de training. Na het volgen van deze training bent u in staat:

2.8 Tabellen importeren of koppelen

Kennis- en discussiebijeenkomst Deponeren 1 juli 2010 te Amersfoort.

Dataconversie met Oracle Spatial

Databank - Basis 1. Inhoud. Computervaardigheden en Programmatie. Hoofdstuk 4 Databank - Basis. Terminologie. Navigeren door een Venster

Databases - Inleiding

Toon TITEL, JAAR en PLATVORM van GAMES die voor het jaar 2000 uitkwamen op Nintendo 64

Uitwisselmodel IM SIKB0102

Functionele Componenten

Alure - stappenplan Importeren relaties

Algemene inrichting van import acties binnen Vision.

DATAMODELLERING XML SCHEMA DEFINITIONS

Digitaal werken in de archeologie

De URI-strategie voor de Linked Data van de RCE. (Versie 0.2)

Wij de werkzaamheden u het resultaat!

1 Calculatie XE, 9.00 update 16 2

Semantiek (met de BAG als voorbeeld) Dienstverlening in verbinding Wetgeving in verbinding 12 maart 2014 Marco Brattinga

Ontwerp aan te leveren informatiebestand

[Microsoft Access 2007 Een eigen database maken] 28 oktober 2009

Les 15 : updaten van gegevens in de database (deel2).

Access Basis. 699,- excl. BTW per deelnemer Duur: Kosten: 2 dagen Max Deelnemers: 10

Wijzigen BTW-codes in stambestanden

Rapporten. Labels en Rapporten in Atlantis 1. Atlantis heeft twee manieren om output te genereren: 1. labels 2. rapporten (reports)

User accounts maken in een Wandy Hotspot, d.m.v. een batch.

Release notes: Module: Centix Background Service (CBS) Meldingnr Omschrijving. Soort

Gebruikershandleiding

ROSA software voor de kinderopvang

LSP Connect en HL7v3

INHOUD. Presentatie ICT werkervaring (voornamelijk) Gericht op databasetoepassingen. Sprekers. Allard van Amerongen Ing. Stefan Boekel

Specificaties levering GIS-producten

Aquo Informatiemodellen, Uitwisselformaten en objecten

SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd.

Linked Data: stap voor stap, deel 3bis Table of Contents

Documentatie DHD thesauri Bijlage 1 : Uitleverformaat 2.2 Diagnosethesaurus

Jaarplan Softwarepakketten

Catalogger 9.0 features

Sparse columns in SQL server 2008

Handleiding Migratietool Adresboek Crediteuren

Quickstart Swing Studio. Instructie data importeren en publiceren. 26 januari 2015 r mz SWG

4orange Connect. 4orange, Hogehilweg CD Amsterdam Zuidoost

Van CaseTalk naar een database in SQLite studio

Inhoudsopgave. Vergelijking functionaliteit B3P GIS Suite 2.0 en 3.4

opstarthandleiding mysqlworkbench November 2012 Fons van Kesteren HVA- CMD- V1 Datamodelleren

Technische nota AbiFire Rapporten maken via ODBC

Automatisering voor Financiële Dienstverleners. Werken met Queries en Merge Documenten. For more information visit our website at

DATAMODELLERING BASIS UML KLASSEMODEL

DATAMODELLERING GEAVANCEERD UML KLASSEMODEL

DATAMODELLERING DATA MAPPING MODEL

BTW Code Conversie Legal Eagle Integratie Zonder Export versie 2.18.x naar Sdu uitgevers

INSPIRE en wat te doen bij wijzigingen

Les S-01: De basisbeginselen van SQL

Voornaamste toepassing : genereren van output en het bouwen van lijsten voor bestandsbeheer Is direct met Office gelinkt Kan data exporteren in

MS-Office documenten integratie via SAP PI

6 juni 2012, Dolf de Rooij

Databases en SQL Foundation (DBSQLF.NL)

MS Access. Module 0. Pakketnaam, versie 2002 (NL) Nummer: 296 ( ) The Courseware Company

Legal Eagle - Integratiemodule Sdu Uitgevers / A. Koppenaal

Datamodelleren en databases 2011

Module 1 Programmeren

AAN DE SLAG MET ADOBE PHOTOSHOP LIGHTROOM

OFFICE A LA CARTE - ACCESS 2013

Ontwikkelingen bij het CBS

Handleiding uitwisseling Tekla Structures RFEM versie: Dlubal RFEM Tekla Structures 19.1

Technische nota AbiFire5 Rapporten maken via ODBC

Handleiding Migratietool Adresboek Crediteuren

Structured Query Language (SQL)

SQL datadefinitietaal

Werken met leerpaden. Inleiding. Handleiding Zermelo. Copyright 2018, Zermelo Software BV - pagina 1. Op deze pagina PORTAL 1.20.

Crossmedia Publishing III

Bijlage Inlezen nieuwe tarieven per verzekeraar

databases & SQL - antwoorden

Release notes:

Overige transacties 1 (Excel 2002 en 2003)

Workflow Verrijkte Documenten

Delft-FEWS & Web Services

SQL Aantekeningen 3. Maarten de Rijke 22 mei 2003

Handleiding importeren Budgetten

OVERZICHT AANPASSINGEN VISION - RELATIE VANAF

B3Partners. Beheerhandleiding Datastorelinker 4.2. Gewijzigd: 28 maart B3Partners BV Bedrijvenpark Lage Weide Zonnebaan 12c 3542 EC Utrecht

KPDdoc kerneigenschappen

De mogelijkheden van XML voor de langdurige bewaring van digitale documenten. DAVID studiedag 30 nov 2000

Complicaties registreren Een hulpmiddel bij aanschaf en gebruik van software

Excel Controller. Handleiding Excel Controller Wizard

HANDLEIDING OPNAME INVENTARIS

Bronboek ISBN conversie naar EAN

Medical Intelligence in de praktijk

Transcriptie:

SIKB0102!? Wouter Boasson Kennis delen

Opgraving -> Pakbon Opgraving Objecten Documentatie Relaties Records Relatiemodel Pakbon Kaartenbak

Gefilterde objecten, prima Pakbon

Uitwisselen archeologische data Opgraving Objecten Documentatie Relaties Records Relatiemodel Uitwisseling Kaartenbak

Archeologisch project Project-database Veel variatie tabellen attributen codes relaties Gedetailleerde informatie

Uitwisselstandaard kenmerken Vaste structuur (technisch) tabellen attributen Harmonisatie (inhoud, betekenis) standaard coderingen Generiek Object-georienteerd model

Botsing! Project Eigen structuur tabellen attributen relaties Eigen coderingen maximaal detail Uitwisselstandaard Standaard structuur tabellen attributen relaties Standaard coderingen harmonisatie Object georienteerd model

Rekbaar uitwisselformaat

SIKB0102 Informatiegroepen Structuur put-vlak-profiel sporen Hoogtemetingen Geodata GML Bestanden XYZ Bergingsmateriaal vondsten monsters Bestanden scans foto's rapporten Metadata Projectinformatie... Interpretatie, analyse spoor structuren (historisch) determinatie (vondst, monster)

Een project datastructuur Put Vlak Spoor Vulling Vondst Vondst Splits Mat. A Mat. B...

SIKB0102, tabellen Put Planum Spoor Vulling Veldvondst Vondst

Mapping Put Put Planum Vlak Spoor Vulling Spoor Vondst Vulling Vondst Splits Mat. A Mat. B... Veldvondst Vondst

Mapping en koppelingen Put Put Planum Vlak Spoor Vulling Spoor Vondst Vondst Splits Vulling Waarneming Vondstcontext Veldvondst Mat. A Mat. B... Vondst

En dan ga je converteren...

Sleutels, nummering Sleutelvelden: groot probleem enkelvoudig, uniek nummer in de hele XML nodig voor identificatie en koppelingen objecten bestaande nummers niet gegarandeerd uniek samengestelde sleutels Oplossing unieke, enkele identifiers: UUID wereldwijde standaard voor uitgeven unieke nummers dubbelingen vrijwel onmogelijk bij correct gebruik Voordeel eenduidige koppeling objecten in XML updates gegevens

Werken met UUIDs Alles omnummeren: Put:1.Vlak:2.Spoor:7 => 'a81c1a0f-10c2-11e2-a845-000c29b6e763' In MS Access aan te maken autonummer kolom, type 'Replicatie ID' Gebruik de juiste versie van een UUID/GUID Versie 4 voor 100% gegarandeerd uniek (elke keer genereren levert nieuwe en unieke) Versie 5 voor unieke op basis van een URL patroon

UUID voorbeelden 1 Genereren unieke uuids, elke keer anders, met behulp van de PostgreSQL database:! olga_dev=# select uuid_generate_v4() from generate_series(1,3);! uuid_generate_v4! --------------------------------------! dfafc209-151b-4004-99e4-07f65efa03db! 322a3c30-c850-48df-af32-ef74df5637a2! 67893687-2ff9-49c9-89d7-7cdd6124153a! (3 rows)! En opnieuw, merk op dat ze allemaal anders zijn:! olga_dev=# select uuid_generate_v4() from generate_series(1,3);! uuid_generate_v4! --------------------------------------! e12ddab6-37f6-40ad-9c58-718f882020e1! fea74004-d7bf-46d5-bc0b-2c8dd05d288c! f48b73d1-5cb0-4922-b5be-f34be8d343de! (3 rows)!

UUID voorbeelden 2 Stabiele UUID, herhaald genereren levert dezelfde UUID op:! olga_dev=# select uuid_generate_v5(uuid_ns_url(), 'http://www.raap.nl/sikb/projectnaam/spoor/5');! uuid_generate_v5! --------------------------------------! cb2d8d90-9c8e-5eac-a163-0e4a2dcc768d! (1 row)! olga_dev=# select uuid_generate_v5(uuid_ns_url(), 'http://www.raap.nl/sikb/projectnaam/spoor/5');! uuid_generate_v5! --------------------------------------! cb2d8d90-9c8e-5eac-a163-0e4a2dcc768d! (1 row)! En nu een andere:! olga_dev=# select uuid_generate_v5(uuid_ns_url(), 'http://www.raap.nl/sikb/projectnaam/spoor/6');! uuid_generate_v5! --------------------------------------! 14a7713c-81b1-5d30-861e-ad3722886c83! (1 row)!

UUID voorbeelden 3 Zelfde geintje, maar dan met Python:! PS C:\Users\wouterb> python! Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32! Type "help", "copyright", "credits" or "license" for more information.! >>> import uuid! >>> print uuid.uuid4()! 00f308bc-2b47-42a1-ae1b-114790631147! >>> print uuid.uuid4()! e285e387-28b4-4041-b41e-837dd1325e37! >>> print uuid.uuid5(uuid.namespace_url, 'http://www.raap.nl/sikb/projectnaam/spoor/5')! cb2d8d90-9c8e-5eac-a163-0e4a2dcc768d! Merk op dat de laatste, met Python gegenereerde UUID identiek is aan de met PostgreSQL gegenereerde in het vorige voorbeeld:! Python:!cb2d8d90-9c8e-5eac-a163-0e4a2dcc768d! PostgreSQL:!cb2d8d90-9c8e-5eac-a163-0e4a2dcc768d! Gebruik NOOIT, NOOIT, en nogmaals NOOIT zelf verzonnen UUID's!!

Structuur aanpassen Mapping namen tabellen kolommen Groeperen meerdere brontabellen => 1 SIKB0102 tabel Splitsen 1 brontabel => meerdere SIKB0102 tabellen aanmaken koppelobjecten

Relaties aanpassen Omwille van flexibiliteit centrale relatie-tabel niet verplichte relaties veel-op-veel relaties Voorbeeld Foto-tabel met koppelvelden voor vondst en spoor SIKB0102: relatie in centrale relatietabel foto fotograaf spoor vondst 12 Pietje 7 relatie klasse1 id1 klasse2 id2 GeassocieerdMet Foto 12 Spoor 7

Coderingen Opgravers en specialisten: specialistisch, veel detail Harmonisatie: ABR Vertalen codes noodzakelijk: paalkuilen naar type => paalkuil in ABR vondsten met enig detail => generiek type in ABR...

Waarom zo moeilijk? Uitwisselformaat noodzakelijkerwijs inhoudelijk gecompliceerd: brondatamodellen conceptueel divers beperken/geen informatie-verlies

Informatie-behoud Standaard, per definitie geharmoniseerde codes beperkt aantal kenmerken Maar ook: standaard structuur voor aanvullende data toevoegen alle gewenste attributen beschrijving attributen beschrijving originele codes koppeling/vertaling originele naar geharmoniseerde codes

Kijkje onder water

Odile 4 => SIKB0102

Deponering Archeologische gegevens Codereferenties Objectrelaties Attributen (specialisten) Archis

Controle inhoud Exporterende partij controle op data-integriteit inhoudelijke controle Importerende partij controle op data-integriteit SIKB0102: XSD validatie niet volledig, onmogelijk helpt wel veel

Technische opties Eerst herstructureren gebruik relationele database queries/views tijdelijke tabellen export XML Volledig in programmacode XML export bron database + XSLT transformatie, of eigen XML export routines in database Probleem in alle gevallen: stabiele unieke id's

RAAP s uitdaging RAAP systeem: by design meerdere database structuren mogelijk, toegespitst op project Archivering en deponering vereisen aanvullende gegevens, vaak niet in projectdatabase

Aanpak Odile archief-database projectarchief met volledig behoud van gegevens datamodel geoptimaliseerd voor uitwisseling stabiel gegevensmodel import en export van SIKB0102 Programmeerbare converter Odile projectdatabase -> archief database conversie-programma per template Aanvullende tooling deponeringsinformatie toevoegen aan archief archief bevragen harmonisatie coderingen

Archief: dozenlijst (1e opzet)

Status Archiefdatabase: prototype functioneert Converter projectdatabases: 95% Inlezen SIKB0102: 80% Export naar SIKB0102: 80% Deponeringstool: 0-80% bestaande extensie van Odile4, onderzoeken of die geschikt gemaakt kan worden voor de nieuwe database Archieftool: 0%

Systeem overzicht Odile 4 Converter + conversieprogramma Deponeringsgegevens Bevragen archief Archief database SIKB0102 XML bestand

Converter Flexibele converter: programmeerbaar (geen grafische schil) complex vanwege de conceptuele verschillen tussen specifiek project en generiek uitwisselformaat voorziet in routines om generieke taken te doen koppelobjecten aanmaken aanmaken stabiele identifiers opslag attributen niet in SIKB0102 Python multi-platform

Conversie programma 'Structuur' from odilebaseimport import *! class TransferData(OdileBaseImport):! _tablename = 'STRUCTUUR'! _dataquery = 'ARCH_STRUCTUUR'! _datatype = ''! _classname = 'Structuur'! _datafields = {}! _codelists = {}! _datafields['beschryf'] = 'informatie'! _datafields['datering'] = 'beginperiode'! _datafields['structuur'] = 'structuurtype'! _codelists['structuur'] = 'structuur'! _codelists['datering'] = 'abrdat'! _customattributes = {}! _keyfields = []! _mastermap = {}! _mastermapobjrel = {}! _masterfields = {}! _masterkeyfields = {}! def item_processing(self, sourceitem, destitem):! destitem.eindperiode = destitem.beginperiode!

Conversie, aanmaken objecten def item_processing(self, sourceitem, destitem):! waarneming = ADM.Waarneming()! waarneming.objectid = uuid.uuid1()! waarneming.bronid = destitem.bronid + ".waarneming"! waarneming.planumid = destitem.vlakid! waarneming.projectid = destitem.projectid! waarneming.spoorid = destitem.objectid! # waarneming.methode: afgeleid uit vlaknummer! if sourceitem['vlak'] < 101:! waarneming.methode = 'Vlak'! else:! waarneming.methode = 'Profiel'! self.add_to_keymap(waarneming.bronid, waarneming.objectid)! self.adbsession.add(waarneming!

Verdere mogelijkheden strategie Converter kan eenvoudig geschikt gemaakt worden om elke Access database in te lezen in de archiefdatabase (niet alleen Odile databases) Web-ontsluiting

Tijdspad Q4 2012 Converter projectdatabase archiefdatabase Export SIKB0102 Import SIKB0102 Deponeringstool Archieftool

Samenvatting export proces Unieke ID's aanmaken omnummeren link met bronid bewaren relaties aanpassen herhaalde export dataset: data-id's identiek, export versie wel met unieke identifier en datum Structuur: mapping tabellen, attributen naam splitsen, samenvoegen, nieuwe objecten aanmaken relaties aanpassen (in centrale tabel plaatsen) attributen voor informatiebehoud onderbrengen in aparte set generieke tabellen Codes mappen naar geharmoniseerde veelal handmatig invoeren (bewaren dus!) Controle uitvoeren niet elke controle kan in XSD validatie gevangen worden specifieke aandacht voor: waarnemingen (verbind sporen en putten/vlakken, controle niet mogelijk)

Verder, afspraken Gebruik bronid voor oorspronkelijke nummer kan niet zomaar, wegens andere structuur afspraak en/of aanpassing nodig Aanpassing nodig voor meezenden van de originele coderingen met betekenis en vertaling kan nu wel te duur/complex

Wat levert het op? Uitwisseling deponering 3 e partijen Archief alle brondata (detail, originele codes) uniform te bevragen centraal

Volwaardige uitwisselling! Opgraver Archis Depot Onderzoek

FAQ Moet je nu voor elk project een nieuwe converter maken? Nee, zolang de voor de conversie gebruikte tabellen en velden bestaan volstaat 1 conversie programma (meer tabellen en meer velden in dezelfde tabel geeft niet). Hoe moeilijk is het nu eigenlijk? Niet echt, met de juiste queries kan de export voorbereid worden. De noodzakelijke queries zijn met bijv. de MS Access wizzards wel te maken. Daarna is nog wel export en nabewerking nodig met een XSLT, of export met bijv. Python of via VBA. Tijdsinvestering? Het is vooral de optelsom van een aantal op zich niet moelijke operaties, in combinatie met de hoeveelheid, die export tot een flinke klus maken, reken op minimaal een week, maar waarschijnlijk meer. De grootste valkuil is misschien nog wel de metadata (bestandenlijsten, projectinformatie, etc), aangezien dat wat complexere XML structuren zijn dan de archeologische inhoud. Hoe kom ik aan die UUIDs? Zie eerder in de presentatie (MS Access Replicatie ID; genereren met een programmeertaal, bijv. Python; genereren in een andere database met een uuid module, bijv. PostgreSQL).