Het probleem komt volgens mij ook de door de manier waarop we RDF maken van relationele tabellen. Op dit moment doen we dat als volgt:
- de tabel bepaalt het type instanties (rdf:type) in de tabel
- iedere rij in de tabel heeft een id (URI). Deze URI is een verwijzing naar een concrete instantie. Deze URI vormt de subject van een triple.
- iedere kolom heeft zelf ook een id (URI). Deze URI verwijst naar een concept, meestal een eigenschap van de instantie. Deze URI vormt de predicate van triples.
- de cellen, die niet het id vormen van de instantie, bevatten óf de waarde van die instantie voor die eigenschap óf een verwijzing (URI) naar een andere instantie. Zo'n cel vormt de object van een triple.
Deze manier van omvormen van relationele tabellen naar RDF is lekker eenvoudig en daardoor overzichtelijk. Maar is ze juist? Moeten we willen dat van iedere cel een aparte triple wordt gemaakt? Wat is de requirement die dat verlangt?
Een alternatief (dat me werd aangereikt door Richard Nagelmaeker) is om van de gehele rij één triple te maken. Het object van deze triple is een code-waarde-lijst. De codes in de code-waarde-lijst zijn URI's die verwijzen naar de concepten, meestal eigenschappen van de instanties. De waarden in de code-waarde-lijst zijn strings als het gaat om data of URI's als het gaat om verwijzingen naar instanties waarvan de data in andere tabellen staan.
De rationale voor deze benadering is dat je óf geïnteresseerd bent in de instanties óf dat je geïnteresseerd bent in de concepten. Het komt niet vaak voor dat je in één opvraging informatie (data) over zowel de concepten als over de instanties ophaalt. Raadpleegt de opvraging meerdere tabellen, dan moeten er één of meer tussenstappen gemaakt worden die van de relaties tussen instanties een aparte (tijdelijke) code-waarde lijst maakt ten einde eenvoudig van iedere instantie een bijbehorende instantie te kunnen opvragen.
Geen opmerkingen:
Een reactie posten