Welcome to TiddlyWiki created by Jeremy Ruston, Copyright © 2007 UnaMesa Association
!!!Een opmerking over de titel "(moderne) metadata talen"
Dit is natuurlijk een gevaarlijke titel. Wanneer is iets modern? Ik kan twee dingen doen:
*deze [[tiddler]] blijvend vernieuwen, zodat de inhoud ervan blijvend modern is
*deze [[tiddler]] in een bepaald tijd frame zetten, waardoor het woord modern in de juiste context is te plaatsen.
Ik zal hier de tweede strategie volgen, hoewel ik niet ga beloven dat ik deze [[tiddler]] nooit meer zal updaten. Wanneer ik het update zal dit echter ''automatisch'' in de metadata van deze [[tiddler]] //(direct onder de titel)// worden opgenomen.
!!!Overzicht van (moderne) metadata talen
Ik noem er hier nu drie, hoewel ik me realiseer dat deze opsomming waarschijnlijk niet volledig is:
*RDF
*OWL
*Dublin Core
!!!Kwalitatieve eigenschappen van een moderne metadata taal
Een betere opsomming is er waarschijnlijk een waarin de kwalitatieve eigenschappen van een moderne metadata taal worden benoemd. Om een goede lijst van kwalitatieve eigenschappen op te stellen zullen alle [[kenmerken van metadata|Kenmerken van metadata]] in ogenschouw moeten worden genomen. Dit heeft een sterke relatie met de [[(kwalitatieve) eisen die je aan metadata zou kunnen stellen|Eisen aan metadata]].
// bron: [[onderwijsstandaarden web-log: "Liever drie metadata standaarden dan één"|http://onderwijsstandaarden.web-log.nl/mijn_weblog/2007/08/liever_drie_met.html]] //
''Tegenstrijdig''
Liever drie metadata standaarden dan één lijkt tegenstrijdig, want standaardisatie is er toch om zoveel mogelijk op dezelfde manier te doen?
''Diversiteit''
Het antwoord is diversiteit. Diversiteit stimuleert innovatie en maakt ruimte voor kwalitatieve verbeteringen. Het streven naar één standaard is nog wat anders dan één standaard opleggen en alle andere standaarden in de ban te doen. Het bestaan van varianten van metadata dwingt tolerantie af, onder andere bij de systemen die er mee om moeten gaan.
''Tolerantie''
Zitten er dan geen grenzen aan die tolerantie? Natuurlijk wel. Het is juist het zoeken naar die grenzen waarmee je criteria kan formuleren die aanleiding geven voor kwalitatieve verbeteringen. Twee voorbeelden:
* Tolerant omgaan met een andere standaard kan alleen als die andere standaard dat ook doet
* Tolerantie moet wel een hoger doel dienen en geen doel op zich worden. (Het is haast net als in de grote mensen wereld...)
''Harmonisatieprincipes''
In het [[HarmonyManifest|http://ariadne.cs.kuleuven.be/lomi/index.php/HarmonyManifest]] worden vijf harmonisatieprincipes genoemd: Extensibility, Modularity, Refinements, Multilingualism en Machine-processability.
Tolerant omgaan met diversiteit en tegelijkertijd streven naar één standaard vormen op zichzelf criteria voor de harmonisatieprincipes van standaarden. Een nieuwe standaard moet altijd ruimte bieden voor het ontstaan weer nieuwe standaarden. Dit principe wordt vooral goed gewaarborgd als je je houdt aan het principe Modularity, maar stelt ook eisen aan de vier andere principes.
Een ander harmonisatieprincipe daarnaast richt zich meer op het proces van harmonisatie. Tijdens het harmonisatieproces mogen compromissen nooit worden gemaakt op het niveau waar de standaarden voor bedoeld zijn, omdat je daarmee de voordelen van diversiteit teniet doet.
Om een harmonisatieproces goed uit te voeren is het dus razend belangrijk om goed op een rij te hebben waar metadata nu eigenlijk voor bedoeld is en waar metadata inmiddels voor gebruikt wordt en misschien ook wel in de toekomst voor gebruikt kan worden...
{{{
todo
- proces van "het analyseren van resources" toelichten
- waarom
- wanneer
- wie
- hoe
}}}
Een metadatastandaard kan onder andere regels opleggen over de te gebruiken velden en over de inhoud van die velden. Ook over de structuur van de velden onderling of de structuur van de velden zelf kunnen afspraken bestaan. Stel dat een metadatastandaard stelt dat je alleen de vooraf gedefinieerde velden mag gebruiken, dan is het daarna niet meer mogelijk om extra velden toe te voegen. Je kan natuurlijk een veld verzinnen waar alle overige informatie in kan worden opgenomen.
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
{{{
todo
- proces van "het beschrijven van resources" toelichten
- waarom
- wanneer
- wie
- hoe
}}}
Background: #fff
Foreground: #000
PrimaryPale: #f6c4da
PrimaryLight: #00a5df
PrimaryMid: #e40382
PrimaryDark: #392085
SecondaryPale: #f7d4ea
SecondaryLight: #90d4f6
SecondaryMid: #907eb8
SecondaryDark: #9785bd
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
Stel ik beschrijf een leerobject dat gaat over het gebruik van wiki software in het onderwijs. Het leerobject is een handleiding bedoeld voor leerkrachten, omdat er bij die doelgroep nog erg weinig bekend is over het gebruik van wiki's in het onderwijs. Daarnaast is het getagd met de keywords "nieuwe ontwikkelingen", "internet in het onderwijs" en "social software". Goed, de kwaliteit van de toegevoegde metadata laat te wensen over, maar ook dat is een gegeven waar je bij het ontwerpen van een metadatastandaard rekening mee moet houden.
Als ik echter over tien jaar zoek op "nieuwe ontwikkelingen" of "de geschiedenis van wiki's in het onderwijs" zal ik in beide gevallen iets anders vinden dan ik had verwacht. Goed, de kwaliteit van de zoekvraag laat te wensen over, maar ook dat is een gegeven waar je bij het ontwerpen van een metadatastandaard rekening mee moet houden.
Als eigenaar van de metadata of als eigenaar van het leerobject kan ik er natuurlijk voor kiezen om de metadata of het leerobject regelmatig aan te passen, maar de vraag is of ik daar dan ook tijd (en geld) in wil steken en of ik de gedistribueerde metadata of content nog wel terug kan vinden om die aanpassingen in alle versies uit te voeren.
Kunst is om de metadata zo op te stellen dat het gedurende de hele levenscyclus van het leerobject precies dat uitdrukt wat je wilt uitdrukken. Dit is waarschijnlijk te moeilijk of te duur of allebei. Een alternatieve oplossing is dus wenselijk.
Eén alternatief is om systemen die gebruik maken van metadata rekening te laten houden met het temporele aspect van de metadata. Vraag is natuurlijk wel wat een systeem daarvoor nodig heeft om dat te kunnen doen. Hier ligt dus een vraagstuk waar ontwerpers van metadatastandaarden hun gedachten over kunnen laten gaan.
{{{
todo
- de verhaallijn van deze insteek sterker benadrukken/verbeelden/visualiseren
- de scope strakker neerzetten/inperken
}}}
[[Metadata gebruik je voor|Waarvoor wordt de metadata gebruikt?]] het [[zoeken naar materiaal|Zoeken naar resources]] en het [[vergelijken van materiaal|Vergelijken van resources]]. Metadata vormt een beschrijving van iets en aangezien je niet van tevoren kunt voorspellen wat je de komende decennia wilt gaan beschrijven is het slechts ten dele mogelijk om te weten waar een beschrijving, de metadata, aan zal moeten voldoen. Over sommige [[aspecten van de metadata|Aspecten van de metadata]] kan je waarschijnlijk wel afspraken maken, maar over heel veel andere aspecten waarschijnlijk niet.
Afspraken over metadata, maken het mogelijk om systemen te bouwen die gebruik maken van metadata om het zoeken naar materiaal en het vergelijken van materiaal te faciliteren. [[Hoe meer er in een afspraak over de eigenschappen van de metadata is vastgelegd, des te beter kunnen deze processen van vinden en vergelijken worden gefaciliteerd|Een strikte metadatastandaard bevorderd de doeltreffendheid van het gebruik van metadata]].
[[In die gevallen waarbij je meer weet over hetgeen je wilt beschrijven, is het mogelijk om meer afspraken te maken over de bepaalde aspecten van de metadata|Een strikte metadatastandaard is beter mogelijk bij striktere afbakening van de verzameling van hetgeen je beschrijft]]. Wanneer je echter meer in een metadatastandaard vastlegt, dan leg je ook meer [[beperkingen op aan de dynamiek van de uitdrukkingskracht|Een strikte metadatastandaard beperkt de uitdrukkingskracht van de metadata]] van de metadata of je legt beperkingen op aan de diversiteit van het materiaal dat je beschrijft. Wanneer je deze laatste beperking negeert zul je aan de kant van het zoeken en vergelijken moeten inleveren, omdat de diversiteit van het beschreven materiaal niet tot uitdrukking komt in de de beschrijving zelf.
De waarheid van deze (tegen)stellingen moet natuurlijk verder worden onderzocht voordat je er conclusies aan kan verbinden. Daarnaast zijn er misschien mogelijkheden om deze paradox te omzeilen en die oplossingen zullen vervolgens ook op bruikbaarheid moeten worden getoetst.
[[Inleiding]]
[[LeesWijzer]]
zie ook [[Divergentie van standaarden is noodzakelijk]]
!!!!todo
>De vraag beantwoorden wat er nodig is om divergentie van een metadatastandaard mogelijk te maken.
!!!!todo
>- beeldende toelichting geven wat ik bedoel met: "Divergentie van metadatastandaarden"
Dat divergentie van standaarden een noodzakelijk kwaad is illustreert onderstaande afbeelding:
[img[http://farm3.static.flickr.com/2233/2034846612_f186b768f9_m.jpg][http://www.flickr.com/photos/33429907@N00/2034846612/]]
Standaardisatie (zie linksboven) is erg handig (zie rechtsboven). Er zal echter hoe dan ook een moment komen waarop er behoefte aan divergentie ontstaat. Soms biedt een standaard nog voldoende ruimte (rechtsonder), maar soms ook gaat een standaard "knellen" (linksonder).
Het is dus verstandig om daar in een standaard, [[dus ook in een metadatastandaard|Divergentie van een metadatastandaard]] rekening mee te houden.
*(semi) automatisch, handmatig, gemengd
*één entiteit of meerdere entiteiten
*gebruikers of auteurs/makers van de resources
Om de waarheid van de uitspraak "Een strikte metadatastandaard beperkt de uitdrukkingskracht van de metadata" te onderzoeken is het goed om eerst de onderdelen van de uitspraak nader te definiëren:
*Een strikte standaard.
*Uitdrukkingskracht van metadata
Logische vervolgvragen die je moet stellen om deze stelling op waarheid te testen zijn:
*Wanneer is deze stelling waar?
*Wat bepaalt de uitdrukkingskracht van metadata?
Algemene conclusie ten aanzien van deze stelling is dat de context waarin metadata gebruikt wordt, deels mede bepalend is of de uitdrukkingskracht aan de verwachtingen van de gebruiker voldoet voor zover deze op de hoogte is van alternatieven en dat daarmee de uitdrukkingskracht niet per definitie wordt beperkt door door een strikte metadatastandaard, maar dat die beperkende factor in potentie wel altijd aanwezig is.
De vraag is nu of je iets aan een dergelijke algemene conclusie hebt.
!!!!todo
>- context van deze stelling benoemen (backlinks)
>- argumenten noemen ten gunste van de stelling: "Een strikte metadatastandaard bevorderd de doeltreffendheid van het gebruik van metadata"
>- eveneens argumenten tegen deze stelling noemen.
!!!!todo
>- context van deze stelling benoemen (backlinks)
>- argumenten noemen ten gunste van de stelling: "Een strikte metadatastandaard is beter mogelijk bij striktere afbakening van de verzameling van hetgeen je beschrijft"
>- eveneens argumenten tegen deze stelling noemen.
De verschillende kenmerken van metadata hebben verschillende eisen tot gevolg. Dit kunnen [[eisen zijn aan de metadata zelf|Eisen aan metadata]], maar ook [[eisen aan de systemen|Eisen aan de metadata-verwerkende-systemen]] (in de ruimste zin) die metadata verwerken.
Om met metadata datgene te kunnen bereiken wat ermee bedoeld is zullen metadata-verwerkende-systemen (in de ruimste zin) aan een aantal eisen moeten voldoen.
!!!Metadata-verwerkende-systemen in de ruimste zin
*Een systeem kan een losse applicatie zijn of een samenhangend geheel van applicaties
*Een systeem strekt zich ook uit tot de organisatie van gebruikers
!!!Van eisen naar criteria
Eisen zijn vaak gericht op een specifiek onderdeel van een systeem. Als het goed is
!!!Matrix Doelstelling van metadata en Criteria metadata-verwerkende-systemen
De verschillende kenmerken van metadata hebben verschillende eisen tot gevolg. Om te bepalen welke eisen je aan de metadata moet stellen zal je op basis van de [[kenmerken|Het begrip metadata]] van de metadata een aantal overwegingen moeten maken.
...
Daarbij komt dat er vaak vocabulaires worden gebruikt als onderdeel van de metadata.
Net zoals je eisen kunt stellen aan metadata kan je ook eisen stellen aan vocabulaires. Voordat je weet welke eisen je daarvoor moet stellen is het goed te weten welke [[overwegingen die je zou moeten maken bij het ontwikkelen van vocabulaires|Overwegingen bij het maken van vocabulaires]].
In "[[A Learning Object Manifesto|http://ariadne.cs.kuleuven.be/mediawiki/index.php/A_Learning_Object_Manifesto]]" zegt Duval"
>//"[[Metadata is just metadata|http://ariadne.cs.kuleuven.be/mediawiki/index.php/A_Learning_Object_Manifesto#Metadata_is_just_metadata]]".//
Wat hij hiermee wil zeggen is dat je er nog niet bent met metadata alleen. Zeker niet gezien de problematiek van verschillende standaarden van metadata, waardoor de situatie kan ontstaan dat je verschillende systemen naast elkaar moet gebruiken om toegang te verkrijgen tot de metadata of dat je slechts tot een beperkt deel van de metadata die op de wereld beschikbaar is toegang hebt.
!!!!todo
>- beeldende toelichting geven wat ik bedoel met: "Harmonisatie van metadatastandaarden"
!!!Definitie
Op http://ariadne.cs.kuleuven.be/lomi/index.php/HarmonyManifest staat een moderne definitie van metadata:
>//Machine-processable information about resources//
De reikwijdte van deze definitie wordt [[vervolgens|http://ariadne.cs.kuleuven.be/lomi/index.php/HarmonyManifest#The_notion_of_metadata]] toegelicht met behulp van enkele voorbeelden waarbij nadrukkelijk wordt vermeld dat metadata niet alleen bestaat uit door mensen toegewezen metadata en dat de metadata niet alleen digitale "resources" beschrijft maar ook niet digitale "resources".
Om nog beter te begrijpen wat metadata inhoud is het goed om in te gaan op de verschillende kenmerken van metadata. Deze kenmerken zijn te ordenen vanuit verschillende invalshoeken.
!!!Kenmerken van metadata
<<tiddler [[Kenmerken van metadata]]>>
!!!!Problematiek bij metadata
<<tiddler [[Problematiek bij metadata]]>>
!!!!Eisen aan de metadata of aan systemen die metadata verwerken
<<tiddler [[Eisen aan de metadata of aan systemen die metadata verwerken]]>>
{{{
todo
- begrip toelichten, liefst ook met plaatjes
- links naar tiddlers over vdex, classificaties en vocabulaires leggen
}}}
!!Doelstelling van deze white-paper
We leven in een dynamische wereld. Een wereld waar veel, heel veel informatie via het Internet is ontsloten. Veel van die informatie is uitstekend geschikt voor gebruik in het onderwijs. Er is natuurlijk een dilemma: hoe zorgen we er voor dat de juiste informatie afgestemd op de behoefte van de gebruiker op het juiste moment en in het juiste formaat beschikbaar is. Zoekmachines helpen gebruikers bij het zoeken naar informatie, maar zijn niet ingericht om leermateriaal te vinden dat aan zulke specifieke eisen moet voldoen, terwijl dat materiaal er toch kan zijn. Met behulp van de juiste metadata zou dit probleem opgelost kunnen worden. Dit stelt natuurlijk aanzienlijke eisen aan de metadata en hierin schuilt de kern van het dilemma: kwaliteit versus kosten.
Hedendaagse ontwikkelingen op het gebied van programmeren, maar ook op het gebied van metadateren tonen een trend die een mogelijke oplossing kan bieden voor het kosten versus kwaliteit dilemma. Programmeren doen we niet meer alleen. Sommige programma's kan je zelfs voor een aanzienlijk deel automatisch of semi-automatisch laten genereren. En programma's worden over een langere periode stapsgewijs modulair opgetuigd tot een kwalitatief steeds beter op de gebruiker afgestemd systeem. Voor metadata is dit ook het geval. Met het volgen van die trend alleen ben je er echter nog niet.
In deze white-paper ga ik in op wat er nodig is om metadata goed te kunnen laten werken. Hierbij belicht ik drie invalshoeken:
*het toevoegen van metadata
*het zoeken met behulp van metadata
*de metadata standaarden
!!Doelgroep
Gezien de verschillende invalshoeken kunnen er ook meerdere doelgroepen worden benoemd. In het algemeen richt dit document zich op de ontwerpers van standaarden en systemen en in mindere mate op die mensen die dergelijke systemen moeten aanschaffen.
De [[LeesWijzer]] biedt verschillende startpunten door deze white-paper, afgestemd op verschillende gebruikersgroepen.
*<<slider wanneerSliderCookie [[Wanneer is de metadata gemaakt?]] "Wanneer is de metadata gemaakt?" "klik voor een opsomming">>
*<<slider doorwieSliderCookie [[Door wie is de metadata gemaakt?]] "Door wie is de metadata gemaakt?" "klik voor een opsomming">>
*<<slider welkeprocedureSliderCookie [[Volgens welke procedure is de metadata gemaakt?]] "Volgens welke procedure is de metadata gemaakt?" "klik voor een opsomming">>
*<<slider waarvoorSliderCookie [[Waarvoor wordt de metadata gebruikt?]] "Waarvoor wordt de metadata gebruikt?" "klik voor een opsomming">>
*<<slider kwaliteitSliderCookie [[Wat is de kwaliteit van de metadata?]] "Wat is de kwaliteit van de metadata?" "klik voor een opsomming">>
*<<slider waaroverSliderCookie [[Waar gaat de metadata over?]] "Waar gaat de metadata over?" "klik voor een opsomming">>
Daarbij komt dat [[metadata zelf ook als resource te beschouwen is|Metadata is zelf ook als resource te beschouwen]] waar vervolgens weer metadata voor kan bestaan...
Het maken/genereren, onderhouden en zelfs gebruiken van metadata brengt altijd kosten met zich mee. Daartegenover staan natuurlijk de opbrengsten. Die opbrengsten zijn niet altijd even makkelijk in kaart te brengen (net als sommige kosten overigens, hoewel dat vaak een stuk makkelijker is). Het Dublin Core Metadata Initiative laat in een [[korte presentatie|http://dublincore.org/groups/corporate/DC_ROIofMetadata.ppt]] een strategie zien die het je mogelijk maakt een keuze te maken tussen wel metadateren of niet metadateren.
Een bijkomend probleem is echter dat je bij die berekeningen moet kijken naar de "return of investment". Dit verondersteld dat je weet hoelang de aan te brengen metadata mee gaat. De houdbaarheidsdatum van informatie is echter veel moeilijker te bepalen dan dat van een product als bijvoorbeeld melk. Dat wordt mede veroorzaakt door het feit dat de doelgroep van de desbetreffende informatie in de loop der tijd kan (en zal) veranderen. Wellicht is die doelgroep niet jouw doelgroep als organisatie zijnde, maar dan rijst de vraag of je niet toch moet metadateren ten behoeve van een breder maatschappelijk belang. Je zou dan overigens ook kunnen overwegen om andere partijen te betrekken bij het dragen van de kosten.
Kwaliteit van de metadata is niet altijd even hoog. Sterker nog, dat is niet eens altijd nodig het gaat immers om kosteneffectiviteit. Je kan dus stellen dat de kwaliteit goed genoeg moet zijn om kosteneffectief te zijn. Dan moet je natuurlijk ook de beoogde en mogelijk doelgroepen in die analyse meenemen. Metadata kan je ook door de tijd heen laten groeien, waardoor de kwaliteit initieel wellicht op een ander niveau (niet per se beter) ligt dan in de toekomst.
Met deze leeswijzer kun je kiezen tussen verschillende doorsneden van de aanwezige teksten. Maak een keuze en klik op de link.
De diverse teksten en doorsneden zijn nog in bewerking.
[[Doorsnede 0|http://metadata.whitepaper.tiddlyspot.com/#%5B%5BTwee%20noodzakelijke%20toevoegingen%20aan%20alle%20(moderne)%20metadata%20talen%5D%5D]]:
:In deze doorsnede zoom ik in op de toevoegingen die noodzakelijk zijn voor alle metadata talen om optimaal aan te kunnen sluiten bij en gebruik te kunnen maken van de dynamiek van de hedendaagse Internet ontwikkelingen. Deze doorsnede richt zich voornamelijk op die mensen die bezig zijn met het ontwerpen en (door)ontwikkelen van metadatastandaarden.
[[Doorsnede 1|http://metadata.whitepaper.tiddlyspot.com/#%5B%5BHet%20begrip%20metadata%5D%5D%20%5B%5BEisen%20aan%20metadata%5D%5D%20%5B%5BEisen%20aan%20de%20metadata-verwerkende-systemen%5D%5D]]:
:Vanuit de definitie van metadata en een opsomming van kenmerken van metadata zijn een aantal eisen te herleiden aan zowel de metadata als aan de systemen, in de ruimste zin van het woord, die metadata verwerken. Deze tekst is een overzicht van die kenmerken en eisen en biedt zodoende toegang tot een aantal praktijk voorbeeld en tips voor verdere ontwikkeling van metadata-verwerkende-systemen maar ook voor metadatastandaarden.
[[Doorsnede 2|http://metadata.whitepaper.tiddlyspot.com/#%5B%5BDe%20metadataparadox%5D%5D]]:
:Ontwerpvraagstukken die een rol spelen bij het ontwikkelen en doorontwikkelen van een metadatastandaard. Deze tekst is bedoeld voor die mensen die bezig zijn met de ontwikkeling en doorontwikkeling van standaarden. In de tekst komen vraagstukken naar voren, die van belang zijn bij het maken van voorspellingen over de toekomstige ontwikkeling van het [[content-zoekprofiel]]. Het huidige content-zoekprofiel is één van de voorbeelden waar ik op inga, maar daarnaast zijn de behandelde vraagstukken ook van breder belang voor de toekomstige ontwikkeling van andere metadatastandaarden.
The granularity paradox:
http://www.tofp.org/blog/?p=19
LOM v1.1 (n.a.v. CRC 2007):
http://ariadne.cs.kuleuven.be/mediawiki/index.php/Lomv1.1
!!!andere whitepapers over metadata
*http://siegel-ict.nl/ProductInfo/wp_metadata/
**stelt een registratie bank voor metadata classes voor
*http://www.llnl.gov/liv_comp/metadata/papers/whitepaper-bretherton.html
**een solide stuk over "A Reference Model for Metadata uit 1994, richt zich voornamelijk op databases.
*http://www.llnl.gov/liv_comp/metadata/other-efforts/cals-expo93-paper.html
**een stuk over standaardisatie en registratie strategie
*http://dymondassoc.com/metadata/mos.htm
**paper over "Metadata-Ontology System (MOS)" dat ingaat op "XML and the Web Ontology Language (OWL)" en daarbij ook iets uitlegt over RDF triples (Subject - Predicate - Object)
*http://www.hpl.hp.com/techreports/2003/HPL-2003-218.pdf
**"Review of existing tools for working with schemas, metadata, and thesauri";2003
*http://www.dlese.org/Metadata/documents/qwg3-whitepaper-v1.htm
**Quality WG3: Metadata Structures Whitepaper
>Summary from Quality Report:
>1. Learning resources in DLESE require description in terms of both pedagogy/education and scientific concepts
>2. An Earth System Science (ESS) vocabulary is missing for search and browse structures
>3. A vocabulary focus on teaching and learning about science is needed
>4. Current vocabularies (especially for ESS) are not concept-specific but are rather subject-specific
*http://www-inf.int-evry.fr/~ngo_ba_h/biblio/download/ControlledVocabulary/Paper_20.pdf
**Metadata and Controlled Vocabularies in the Government of Canada: A Situational Analysis
*http://dc2003.ischool.washington.edu/Archive-03/03heery.pdf
**Metadata schema registries in the partially Semantic Web : the CORES experience (project is in2004 gestopt, had om te beginnen al een tijdelijk karakter.)
*http://www.w3.org/DesignIssues/Semantic.html
**Semantic Web Road map van Tim Berners Lee uit 1998
!!!Andere onderwerp gerelateerde links:
*Noruzi, A. (2007). "Editorial." Webology, 4(2), editorial 12. Available at: http://www.webology.ir/2007/v4n2/editorial12.html
[[Inleiding]]
LeesWijzer
[[Overzichten]]
-----
[[De metadataparadox]]
-----
[[Welcome to Tiddlyspot]] GettingStarted
When mapping terms from one version of a vocabulary to a newer version, a number of mapping types are possible.
[img[http://farm3.static.flickr.com/2267/2066079374_7a25ad634a_m.jpg][http://www.flickr.com/photos/33429907@N00/2066079374/]]
This model gives an overview of the first six simple types. Beside these simple types you can also have mixtures and another possible type is the deprecated type (anouncing the deletion of a term) and the deletion type.
[img[http://farm3.static.flickr.com/2379/2065279391_909ab876c1_m.jpg][http://www.flickr.com/photos/33429907@N00/2065279391/]]
When expressing the terms and their relation in a VDEX file you have to define a relationshipType. It is important to use a standard vocabulary here to improof machine-understanding of the relationships. The big question is how to name these relationshipTypes and possibly which available one to use.
!!!!todo
>geschreven toelichtingen vertalen en eventueel aanvullen
!!!!todo
>- context van deze stelling benoemen (backlinks)
>- argumenten noemen ten gunste van de stelling: "Metadata is noodzakelijk"
>- eveneens argumenten tegen deze stelling noemen.
[img[http://farm3.static.flickr.com/2009/2033933413_887a6cc107_m.jpg][http://www.flickr.com/photos/33429907@N00/2033933413/]]
!!!!todo
>geschreven toelichting toevoegen
!!!!todo
>- context van deze stelling benoemen (backlinks)
>- argumenten noemen ten gunste van de stelling: "Metadata standaarden zijn noodzakelijk"
>- eveneens argumenten tegen deze stelling noemen.
Hieronder stukken tekst die ik uit andere Tiddlers heb verwijderd, maar die ik wellicht nog wel een plek wil geven:
*uit [[De dynamiek van uitdrukkingskracht van metadata]]
**Tegelijk kan je van die systemen verlangen dat het ook rekening houdt met andere persoonskenmerken van zowel de auteur als de zoeker.
!!!!Tiddlers die ik nog niet in het geheel heb opgenomen (maar die ik nog wel wil gebruiken...):
*[[Aspecten van de metadata]]
*[[29 August 2007]]
*Welke veranderingen zijn er in de loop der tijd te verwachten ten aanzien van de samenstelling en bewoording van de vocabulaire?
**tempo van veranderingen
**evenwichtige verdeling van de termen
**noodzakelijke detaillering
**welke consequenties heeft dat als je moet gaan zoeken op basis van twee woordenlijsten
**hoe ga je om met [[de mapping van termen tussen twee versies vocabulaires|Mapping van termen tussen twee versies van vocabulaires]]
*Welke lijsten laat je naast elkaar bestaan?
**concurrerende lijsten
**aanvullende lijsten
**lijsten voor verschillende doelgroepen
**lijsten van verschillende eigenaren
**welke overlap sta je toe
*Betekent discrepantie in termen ook altijd/soms discrepantie in betekenis?
**wat is de mate van inhoudelijke dekking
*Is het detail niveau de juiste?
**moet je termen splitsen
**moet je termen samenvoegen
*Sluit je aan bij officiële lijsten?
*Wil je hiërarchieën toestaan?
**neem je ze hiërarchisch in de lijst op, of benoem je los de relatie
**zijn de container termen alleen voor de leesbaarheid of mag je ze ook gebruiken
*Sta je afko's toe?
*Gebruik je coderingen of tekstuele identifiers?
**coderingen voorkomen soms discussies over de tekstuele variant
**tekstuele variant voorkomt soms vergissingen en is ook direct leesbaar (zonder interface)
*Leg je ook relaties tussen vocabulaires?
**leg je die relaties in een aparte vocabulaire vast of in (één van) de onderhavige vocabulaire
*Biedt de vocabulaire meerwaarde?
**bij het zoeken naar materiaal
**bij het vergelijken van materiaal
**bij het gebruik van materiaal (bijvoorbeeld ter verantwoording of bij het monitoren van zoekacties als basis voor onderhoud/ontwikkeling)
*Is de volgorde van de termen van belang? (grote kans dat die in een interface 1 op 1 wordt overgenomen)
*Welke organisatie neemt het beheer van de lijst op zich?
*Welke doelgroep moet de lijst gaan gebruiken?
*Registreer je de lijst (bijvoorbeeld bij EduStandaard)
[[Bibliotheken]]
[[Archieven]]
[[Musea]]
[[Cartografie]]
[[Onderwijs]]
[[Document management systemen]]
[[Groupware]]
[[Office systemen]]
[[Social Software]]
[[Programmeer talen]]
[[MARC]]
[[UNIMARC]]
[[IEEE LOM]]
[[DCMI]]
[[OpenGIS]]
Onderstaande knop geeft een overzicht van alle items met de tag overzicht.
<<tag overzicht>>
Hierdoor is dit een overzicht van alle overzichten, daarom heeft dit item ook de tag overzicht...
*<<slider harmonisatieSliderCookie [[Harmonisatie van metadata standaarden is noodzakelijk]] "Met metadata alleen ben je er nog niet!" "klik voor een toelichting">>
*<<slider kostenSliderCookie [[Kosten van metadata]] "Metadata is niet gratis!" "klik voor een toelichting">>
*<<slider kwaliteitSliderCookie [[Kwaliteit van metadata]] "Kwaliteit van de metadata is soms dubieus..." "klik voor een toelichting">>
Een overzicht van ontwikkelingen en vraagstukken op het gebied van standaardisatie ten behoeve van metadata.
/*{{{*/
* html .tiddler {height:1%;}
body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}
h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}
hr {height:1px;}
a {text-decoration:none;}
dt {font-weight:bold;}
ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}
.txtOptionInput {width:11em;}
#contentWrapper .chkOptionInput {border:0;}
.externalLink {text-decoration:underline;}
.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}
.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}
/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}
#mainMenu .tiddlyLinkExisting,
#mainMenu .tiddlyLinkNonExisting,
#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}
.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:1.5em 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:1.5em 0em 1em 1em; left:0px; top:0px;}
.siteTitle {font-size:1.4em;}
.siteSubtitle {font-size:1.1em;}
#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}
#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 .3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}
.wizard {padding:0.1em 1em 0em 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0em 0em 0em; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0em;}
.wizardFooter .status {padding:0em 0.4em 0em 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em 0.1em 0.2em;}
#messageArea {position:fixed; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em 0.2em 0.2em 0.2em;}
#messageArea a {text-decoration:underline;}
.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 1em; margin:0;}
.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0em;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}
.tabset {padding:1em 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}
#contentWrapper {display:block;}
#splashScreen {display:none;}
#displayArea {margin:1em 17em 0em 14em;}
.toolbar {text-align:right; font-size:.9em;}
.tiddler {padding:1em 1em 0em 1em;}
.missing .viewer,.missing .title {font-style:italic;}
.title {font-size:1.6em; font-weight:bold;}
.missing .subtitle {display:none;}
.subtitle {font-size:0.8em;}
.tiddler .button {padding:0.2em 0.4em;}
.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}
.footer {font-size:.9em;}
.footer li {display:inline;}
.annotation {padding:0.5em; margin:0.5em;}
* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0em 0.25em; padding:0em 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}
.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}
.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}
.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}
.fieldsetFix {border:0; padding:0; margin:1px 0px 1px 0px;}
.sparkline {line-height:1em;}
.sparktick {outline:0;}
.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}
* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em 0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}
.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
“You’re damned if you do and you’re damned if you don’t.”
- Bart Simpson
... ik heb er een nacht lang over gedroomd ... ze waren echt nodig en het klopte allemaal ... wist ik het nog maar ...
/***
Contains the stuff you need to use Tiddlyspot
Note you must also have UploadPlugin installed
***/
//{{{
// edit this if you are migrating sites or retrofitting an existing TW
config.tiddlyspotSiteId = 'metadata.whitepaper';
// make it so you can by default see edit controls via http
config.options.chkHttpReadOnly = false;
window.readOnly = false; // make sure of it (for tw 2.2)
// disable autosave in d3
if (window.location.protocol != "file:")
config.options.chkGTDLazyAutoSave = false;
// tweak shadow tiddlers to add upload button, password entry box etc
with (config.shadowTiddlers) {
SiteUrl = 'http://'+config.tiddlyspotSiteId+'.tiddlyspot.com';
SideBarOptions = SideBarOptions.replace(/(<<saveChanges>>)/,"$1<<tiddler TspotSidebar>>");
OptionsPanel = OptionsPanel.replace(/^/,"<<tiddler TspotOptions>>");
DefaultTiddlers = DefaultTiddlers.replace(/^/,"[[Welcome to Tiddlyspot]] ");
MainMenu = MainMenu.replace(/^/,"[[Welcome to Tiddlyspot]] ");
}
// create some shadow tiddler content
merge(config.shadowTiddlers,{
'Welcome to Tiddlyspot':[
"This document is a ~TiddlyWiki from tiddlyspot.com. A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //What now?// @@ Before you can save any changes, you need to enter your password in the form below. Then configure privacy and other site settings at your [[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]] (your control panel username is //" + config.tiddlyspotSiteId + "//).",
"<<tiddler TspotControls>>",
"See also GettingStarted.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Working online// @@ You can edit this ~TiddlyWiki right now, and save your changes using the \"save to web\" button in the column on the right.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// @@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick. You can make changes and save them locally without being connected to the Internet. When you're ready to sync up again, just click \"upload\" and your ~TiddlyWiki will be saved back to tiddlyspot.com.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Help!// @@ Find out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]]. Also visit [[TiddlyWiki Guides|http://tiddlywikiguides.org]] for documentation on learning and using ~TiddlyWiki. New users are especially welcome on the [[TiddlyWiki mailing list|http://groups.google.com/group/TiddlyWiki]], which is an excellent place to ask questions and get help. If you have a tiddlyspot related problem email [[tiddlyspot support|mailto:support@tiddlyspot.com]].",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy :)// @@ We hope you like using your tiddlyspot.com site. Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions."
].join("\n"),
'TspotControls':[
"| tiddlyspot password:|<<option pasUploadPassword>>|",
"| site management:|<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . . " + config.tiddlyspotSiteId + ">>//(requires tiddlyspot password)//<<br>>[[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]], [[download (go offline)|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download]]|",
"| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://faq.tiddlyspot.com/]], [[announcements|http://announce.tiddlyspot.com/]], [[blog|http://tiddlyspot.com/blog/]], email [[support|mailto:support@tiddlyspot.com]] & [[feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|"
].join("\n"),
'TspotSidebar':[
"<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . . " + config.tiddlyspotSiteId + ">><html><a href='http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download' class='button'>download</a></html>"
].join("\n"),
'TspotOptions':[
"tiddlyspot password:",
"<<option pasUploadPassword>>",
""
].join("\n")
});
//}}}
{{{
todo
- Deze tiddler is klaar, maar sommige tiddlers achter de links nog niet!
- Er tevens voor zorgen dat ik naar deze tiddler verwijs vanuit andere tiddlers.
}}}
!!!!Uitgangspunt:
Twee algemene meta-metadata toevoegingen aan alle [[(moderne) metadata talen]] zijn noodzakelijk voor de doorontwikkeling van [[metadata|Het begrip metadata]].
!!!!Dit weten we al:
*[[Metadata is noodzakelijk]]
*[[Metadata standaarden zijn noodzakelijk]]
*[[Harmonisatie van metadata standaarden is noodzakelijk]]
!!!!Echter:
Door de [[inhoudelijke, semantische dynamiek van metadata|Inhoudelijke, semantische dynamiek van metadata]], die ontstaat door -maar ook nodig is voor- de doorontwikkeling van metadatastandaarden, zullen er altijd [[varianten van metadatastandaarden|Varianten van metadatastandaarden]] ontstaan die in een later stadium weer [[harmonisatie|Harmonisatie van metadatastandaarden]] behoeven.
[img[http://farm3.static.flickr.com/2164/2033787844_b3b17d1840_m.jpg][http://www.flickr.com/photos/33429907@N00/2033787844/]]
!!!!Daarom:
Ten behoeve van de doorontwikkeling van metadatastandaarden zijn twee toevoegingen aan [[metadata talen|(moderne) metadata talen]] noodzakelijk:
*te gebruiken voor ...
*binnen de scope van ...
Wanneer voeg je dit toe?
*bij [[harmonisatie van metadatastandaarden|Harmonisatie van metadatastandaarden]]
*bij [[divergentie van metadatastandaarden|Divergentie van metadatastandaarden]]
[img[http://farm3.static.flickr.com/2149/2033787674_316174cfc6_m.jpg][http://www.flickr.com/photos/33429907@N00/2033787674/]]
*<<slider toelichtingstandaardmetametadataelementenSliderCookie [[Toelichting op de noodzakelijke toevoegingen aan alle (moderne) metadata talen]] "Een technische toelichting maakt duidelijk waarom juist deze twee toevoegingen noodzakelijk zijn" "klik voor een toelichting">>
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 19/11/2007 14:16:44 | JeroenHamers | [[/|http://metadata.whitepaper.tiddlyspot.com/]] | [[store.cgi|http://metadata.whitepaper.tiddlyspot.com/store.cgi]] | . | [[index.html | http://metadata.whitepaper.tiddlyspot.com/index.html]] | . | ok |
| 19/11/2007 14:21:24 | JeroenHamers | [[/|http://metadata.whitepaper.tiddlyspot.com/]] | [[store.cgi|http://metadata.whitepaper.tiddlyspot.com/store.cgi]] | . | [[index.html | http://metadata.whitepaper.tiddlyspot.com/index.html]] | . | ok |
| 19/11/2007 17:36:11 | JeroenHamers | [[/|http://metadata.whitepaper.tiddlyspot.com/]] | [[store.cgi|http://metadata.whitepaper.tiddlyspot.com/store.cgi]] | . | [[index.html | http://metadata.whitepaper.tiddlyspot.com/index.html]] | . |
| 21/11/2007 17:11:30 | JeroenHamers | [[/|http://metadata.whitepaper.tiddlyspot.com/]] | [[store.cgi|http://metadata.whitepaper.tiddlyspot.com/store.cgi]] | . | [[index.html | http://metadata.whitepaper.tiddlyspot.com/index.html]] | . | ok |
| 21/11/2007 17:43:29 | JeroenHamers | [[/|http://metadata.whitepaper.tiddlyspot.com/]] | [[store.cgi|http://metadata.whitepaper.tiddlyspot.com/store.cgi]] | . | [[index.html | http://metadata.whitepaper.tiddlyspot.com/index.html]] | . |
| 26/11/2007 16:20:27 | JeroenHamers | [[/|http://metadata.whitepaper.tiddlyspot.com/#%5B%5BTwee%20noodzakelijke%20toevoegingen%20aan%20alle%20(moderne)%20metadata%20talen%5D%5D]] | [[store.cgi|http://metadata.whitepaper.tiddlyspot.com/store.cgi]] | . | [[index.html | http://metadata.whitepaper.tiddlyspot.com/index.html]] | . |
| 10/12/2007 11:59:19 | JeroenHamers | [[/|http://metadata.whitepaper.tiddlyspot.com/#%5B%5BTwee%20noodzakelijke%20toevoegingen%20aan%20alle%20(moderne)%20metadata%20talen%5D%5D]] | [[store.cgi|http://metadata.whitepaper.tiddlyspot.com/store.cgi]] | . | [[index.html | http://metadata.whitepaper.tiddlyspot.com/index.html]] | . |
| 10/12/2007 12:27:08 | JeroenHamers | [[/|http://metadata.whitepaper.tiddlyspot.com/]] | [[store.cgi|http://metadata.whitepaper.tiddlyspot.com/store.cgi]] | . | [[index.html | http://metadata.whitepaper.tiddlyspot.com/index.html]] | . |
| 10/12/2007 13:43:20 | JeroenHamers | [[/|http://metadata.whitepaper.tiddlyspot.com/]] | [[store.cgi|http://metadata.whitepaper.tiddlyspot.com/store.cgi]] | . | [[index.html | http://metadata.whitepaper.tiddlyspot.com/index.html]] | . |
| 29/01/2008 11:44:38 | JeroenHamers | [[/|http://metadata.whitepaper.tiddlyspot.com/]] | [[store.cgi|http://metadata.whitepaper.tiddlyspot.com/store.cgi]] | . | [[index.html | http://metadata.whitepaper.tiddlyspot.com/index.html]] | . |
/***
|''Name:''|PasswordOptionPlugin|
|''Description:''|Extends TiddlyWiki options with non encrypted password option.|
|''Version:''|1.0.2|
|''Date:''|Apr 19, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#PasswordOptionPlugin|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (Beta 5)|
***/
//{{{
version.extensions.PasswordOptionPlugin = {
major: 1, minor: 0, revision: 2,
date: new Date("Apr 19, 2007"),
source: 'http://tiddlywiki.bidix.info/#PasswordOptionPlugin',
author: 'BidiX (BidiX (at) bidix (dot) info',
license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
coreVersion: '2.2.0 (Beta 5)'
};
config.macros.option.passwordCheckboxLabel = "Save this password on this computer";
config.macros.option.passwordInputType = "password"; // password | text
setStylesheet(".pasOptionInput {width: 11em;}\n","passwordInputTypeStyle");
merge(config.macros.option.types, {
'pas': {
elementType: "input",
valueField: "value",
eventName: "onkeyup",
className: "pasOptionInput",
typeValue: config.macros.option.passwordInputType,
create: function(place,type,opt,className,desc) {
// password field
config.macros.option.genericCreate(place,'pas',opt,className,desc);
// checkbox linked with this password "save this password on this computer"
config.macros.option.genericCreate(place,'chk','chk'+opt,className,desc);
// text savePasswordCheckboxLabel
place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));
},
onChange: config.macros.option.genericOnChange
}
});
merge(config.optionHandlers['chk'], {
get: function(name) {
// is there an option linked with this chk ?
var opt = name.substr(3);
if (config.options[opt])
saveOptionCookie(opt);
return config.options[name] ? "true" : "false";
}
});
merge(config.optionHandlers, {
'pas': {
get: function(name) {
if (config.options["chk"+name]) {
return encodeCookie(config.options[name].toString());
} else {
return "";
}
},
set: function(name,value) {config.options[name] = decodeCookie(value);}
}
});
// need to reload options to load passwordOptions
loadOptionsCookie();
/*
if (!config.options['pasPassword'])
config.options['pasPassword'] = '';
merge(config.optionsDesc,{
pasPassword: "Test password"
});
*/
//}}}
/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|4.1.0|
|''Date:''|May 5, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (#3125)|
|''Requires:''|PasswordOptionPlugin|
***/
//{{{
version.extensions.UploadPlugin = {
major: 4, minor: 1, revision: 0,
date: new Date("May 5, 2007"),
source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
author: 'BidiX (BidiX (at) bidix (dot) info',
coreVersion: '2.2.0 (#3125)'
};
//
// Environment
//
if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.debugMode = false; // true to activate both in Plugin and UploadService
//
// Upload Macro
//
config.macros.upload = {
// default values
defaultBackupDir: '', //no backup
defaultStoreScript: "store.php",
defaultToFilename: "index.html",
defaultUploadDir: ".",
authenticateUser: true // UploadService Authenticate User
};
config.macros.upload.label = {
promptOption: "Save and Upload this TiddlyWiki with UploadOptions",
promptParamMacro: "Save and Upload this TiddlyWiki in %0",
saveLabel: "save to web",
saveToDisk: "save to disk",
uploadLabel: "upload"
};
config.macros.upload.messages = {
noStoreUrl: "No store URL in parmeters or options",
usernameOrPasswordMissing: "Username or password missing"
};
config.macros.upload.handler = function(place,macroName,params) {
if (readOnly)
return;
var label;
if (document.location.toString().substr(0,4) == "http")
label = this.label.saveLabel;
else
label = this.label.uploadLabel;
var prompt;
if (params[0]) {
prompt = this.label.promptParamMacro.toString().format([this.destFile(params[0],
(params[1] ? params[1]:bidix.basename(window.location.toString())), params[3])]);
} else {
prompt = this.label.promptOption;
}
createTiddlyButton(place, label, prompt, function() {config.macros.upload.action(params);}, null, null, this.accessKey);
};
config.macros.upload.action = function(params)
{
// for missing macro parameter set value from options
var storeUrl = params[0] ? params[0] : config.options.txtUploadStoreUrl;
var toFilename = params[1] ? params[1] : config.options.txtUploadFilename;
var backupDir = params[2] ? params[2] : config.options.txtUploadBackupDir;
var uploadDir = params[3] ? params[3] : config.options.txtUploadDir;
var username = params[4] ? params[4] : config.options.txtUploadUserName;
var password = config.options.pasUploadPassword; // for security reason no password as macro parameter
// for still missing parameter set default value
if ((!storeUrl) && (document.location.toString().substr(0,4) == "http"))
storeUrl = bidix.dirname(document.location.toString())+'/'+config.macros.upload.defaultStoreScript;
if (storeUrl.substr(0,4) != "http")
storeUrl = bidix.dirname(document.location.toString()) +'/'+ storeUrl;
if (!toFilename)
toFilename = bidix.basename(window.location.toString());
if (!toFilename)
toFilename = config.macros.upload.defaultToFilename;
if (!uploadDir)
uploadDir = config.macros.upload.defaultUploadDir;
if (!backupDir)
backupDir = config.macros.upload.defaultBackupDir;
// report error if still missing
if (!storeUrl) {
alert(config.macros.upload.messages.noStoreUrl);
clearMessage();
return false;
}
if (config.macros.upload.authenticateUser && (!username || !password)) {
alert(config.macros.upload.messages.usernameOrPasswordMissing);
clearMessage();
return false;
}
bidix.upload.uploadChanges(false,null,storeUrl, toFilename, uploadDir, backupDir, username, password);
return false;
};
config.macros.upload.destFile = function(storeUrl, toFilename, uploadDir)
{
if (!storeUrl)
return null;
var dest = bidix.dirname(storeUrl);
if (uploadDir && uploadDir != '.')
dest = dest + '/' + uploadDir;
dest = dest + '/' + toFilename;
return dest;
};
//
// uploadOptions Macro
//
config.macros.uploadOptions = {
handler: function(place,macroName,params) {
var wizard = new Wizard();
wizard.createWizard(place,this.wizardTitle);
wizard.addStep(this.step1Title,this.step1Html);
var markList = wizard.getElement("markList");
var listWrapper = document.createElement("div");
markList.parentNode.insertBefore(listWrapper,markList);
wizard.setValue("listWrapper",listWrapper);
this.refreshOptions(listWrapper,false);
var uploadCaption;
if (document.location.toString().substr(0,4) == "http")
uploadCaption = config.macros.upload.label.saveLabel;
else
uploadCaption = config.macros.upload.label.uploadLabel;
wizard.setButtons([
{caption: uploadCaption, tooltip: config.macros.upload.label.promptOption,
onClick: config.macros.upload.action},
{caption: this.cancelButton, tooltip: this.cancelButtonPrompt, onClick: this.onCancel}
]);
},
refreshOptions: function(listWrapper) {
var uploadOpts = [
"txtUploadUserName",
"pasUploadPassword",
"txtUploadStoreUrl",
"txtUploadDir",
"txtUploadFilename",
"txtUploadBackupDir",
"chkUploadLog",
"txtUploadLogMaxLine",
]
var opts = [];
for(i=0; i<uploadOpts.length; i++) {
var opt = {};
opts.push()
opt.option = "";
n = uploadOpts[i];
opt.name = n;
opt.lowlight = !config.optionsDesc[n];
opt.description = opt.lowlight ? this.unknownDescription : config.optionsDesc[n];
opts.push(opt);
}
var listview = ListView.create(listWrapper,opts,this.listViewTemplate);
for(n=0; n<opts.length; n++) {
var type = opts[n].name.substr(0,3);
var h = config.macros.option.types[type];
if (h && h.create) {
h.create(opts[n].colElements['option'],type,opts[n].name,opts[n].name,"no");
}
}
},
onCancel: function(e)
{
backstage.switchTab(null);
return false;
},
wizardTitle: "Upload with options",
step1Title: "These options are saved in cookies in your browser",
step1Html: "<input type='hidden' name='markList'></input><br>",
cancelButton: "Cancel",
cancelButtonPrompt: "Cancel prompt",
listViewTemplate: {
columns: [
{name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
{name: 'Option', field: 'option', title: "Option", type: 'String'},
{name: 'Name', field: 'name', title: "Name", type: 'String'}
],
rowClasses: [
{className: 'lowlight', field: 'lowlight'}
]}
}
//
// upload functions
//
if (!bidix.upload) bidix.upload = {};
if (!bidix.upload.messages) bidix.upload.messages = {
//from saving
invalidFileError: "The original file '%0' does not appear to be a valid TiddlyWiki",
backupSaved: "Backup saved",
backupFailed: "Failed to upload backup file",
rssSaved: "RSS feed uploaded",
rssFailed: "Failed to upload RSS feed file",
emptySaved: "Empty template uploaded",
emptyFailed: "Failed to upload empty template file",
mainSaved: "Main TiddlyWiki file uploaded",
mainFailed: "Failed to upload main TiddlyWiki file. Your changes have not been saved",
//specific upload
loadOriginalHttpPostError: "Can't get original file",
aboutToSaveOnHttpPost: 'About to upload on %0 ...',
storePhpNotFound: "The store script '%0' was not found."
};
bidix.upload.uploadChanges = function(onlyIfDirty,tiddlers,storeUrl,toFilename,uploadDir,backupDir,username,password)
{
var callback = function(status,uploadParams,original,url,xhr) {
if (!status) {
displayMessage(bidix.upload.messages.loadOriginalHttpPostError);
return;
}
if (bidix.debugMode)
alert(original.substr(0,500)+"\n...");
// Locate the storeArea div's
var posDiv = locateStoreArea(original);
if((posDiv[0] == -1) || (posDiv[1] == -1)) {
alert(config.messages.invalidFileError.format([localPath]));
return;
}
bidix.upload.uploadRss(uploadParams,original,posDiv);
};
if(onlyIfDirty && !store.isDirty())
return;
clearMessage();
// save on localdisk ?
if (document.location.toString().substr(0,4) == "file") {
var path = document.location.toString();
var localPath = getLocalPath(path);
saveChanges();
}
// get original
var uploadParams = Array(storeUrl,toFilename,uploadDir,backupDir,username,password);
var originalPath = document.location.toString();
// If url is a directory : add index.html
if (originalPath.charAt(originalPath.length-1) == "/")
originalPath = originalPath + "index.html";
var dest = config.macros.upload.destFile(storeUrl,toFilename,uploadDir);
var log = new bidix.UploadLog();
log.startUpload(storeUrl, dest, uploadDir, backupDir);
displayMessage(bidix.upload.messages.aboutToSaveOnHttpPost.format([dest]));
if (bidix.debugMode)
alert("about to execute Http - GET on "+originalPath);
var r = doHttp("GET",originalPath,null,null,null,null,callback,uploadParams,null);
if (typeof r == "string")
displayMessage(r);
return r;
};
bidix.upload.uploadRss = function(uploadParams,original,posDiv)
{
var callback = function(status,params,responseText,url,xhr) {
if(status) {
var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
displayMessage(bidix.upload.messages.rssSaved,bidix.dirname(url)+'/'+destfile);
bidix.upload.uploadMain(params[0],params[1],params[2]);
} else {
displayMessage(bidix.upload.messages.rssFailed);
}
};
// do uploadRss
if(config.options.chkGenerateAnRssFeed) {
var rssPath = uploadParams[1].substr(0,uploadParams[1].lastIndexOf(".")) + ".xml";
var rssUploadParams = Array(uploadParams[0],rssPath,uploadParams[2],'',uploadParams[4],uploadParams[5]);
bidix.upload.httpUpload(rssUploadParams,convertUnicodeToUTF8(generateRss()),callback,Array(uploadParams,original,posDiv));
} else {
bidix.upload.uploadMain(uploadParams,original,posDiv);
}
};
bidix.upload.uploadMain = function(uploadParams,original,posDiv)
{
var callback = function(status,params,responseText,url,xhr) {
var log = new bidix.UploadLog();
if(status) {
// if backupDir specified
if ((params[3]) && (responseText.indexOf("backupfile:") > -1)) {
var backupfile = responseText.substring(responseText.indexOf("backupfile:")+11,responseText.indexOf("\n", responseText.indexOf("backupfile:")));
displayMessage(bidix.upload.messages.backupSaved,bidix.dirname(url)+'/'+backupfile);
}
var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
displayMessage(bidix.upload.messages.mainSaved,bidix.dirname(url)+'/'+destfile);
store.setDirty(false);
log.endUpload("ok");
} else {
alert(bidix.upload.messages.mainFailed);
displayMessage(bidix.upload.messages.mainFailed);
log.endUpload("failed");
}
};
// do uploadMain
var revised = bidix.upload.updateOriginal(original,posDiv);
bidix.upload.httpUpload(uploadParams,revised,callback,uploadParams);
};
bidix.upload.httpUpload = function(uploadParams,data,callback,params)
{
var localCallback = function(status,params,responseText,url,xhr) {
url = (url.indexOf("nocache=") < 0 ? url : url.substring(0,url.indexOf("nocache=")-1));
if (xhr.status == httpStatus.NotFound)
alert(bidix.upload.messages.storePhpNotFound.format([url]));
if ((bidix.debugMode) || (responseText.indexOf("Debug mode") >= 0 )) {
alert(responseText);
if (responseText.indexOf("Debug mode") >= 0 )
responseText = responseText.substring(responseText.indexOf("\n\n")+2);
} else if (responseText.charAt(0) != '0')
alert(responseText);
if (responseText.charAt(0) != '0')
status = null;
callback(status,params,responseText,url,xhr);
};
// do httpUpload
var boundary = "---------------------------"+"AaB03x";
var uploadFormName = "UploadPlugin";
// compose headers data
var sheader = "";
sheader += "--" + boundary + "\r\nContent-disposition: form-data; name=\"";
sheader += uploadFormName +"\"\r\n\r\n";
sheader += "backupDir="+uploadParams[3] +
";user=" + uploadParams[4] +
";password=" + uploadParams[5] +
";uploaddir=" + uploadParams[2];
if (bidix.debugMode)
sheader += ";debug=1";
sheader += ";;\r\n";
sheader += "\r\n" + "--" + boundary + "\r\n";
sheader += "Content-disposition: form-data; name=\"userfile\"; filename=\""+uploadParams[1]+"\"\r\n";
sheader += "Content-Type: text/html;charset=UTF-8" + "\r\n";
sheader += "Content-Length: " + data.length + "\r\n\r\n";
// compose trailer data
var strailer = new String();
strailer = "\r\n--" + boundary + "--\r\n";
data = sheader + data + strailer;
if (bidix.debugMode) alert("about to execute Http - POST on "+uploadParams[0]+"\n with \n"+data.substr(0,500)+ " ... ");
var r = doHttp("POST",uploadParams[0],data,"multipart/form-data; boundary="+boundary,uploadParams[4],uploadParams[5],localCallback,params,null);
if (typeof r == "string")
displayMessage(r);
return r;
};
// same as Saving's updateOriginal but without convertUnicodeToUTF8 calls
bidix.upload.updateOriginal = function(original, posDiv)
{
if (!posDiv)
posDiv = locateStoreArea(original);
if((posDiv[0] == -1) || (posDiv[1] == -1)) {
alert(config.messages.invalidFileError.format([localPath]));
return;
}
var revised = original.substr(0,posDiv[0] + startSaveArea.length) + "\n" +
store.allTiddlersAsHtml() + "\n" +
original.substr(posDiv[1]);
var newSiteTitle = getPageTitle().htmlEncode();
revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
revised = updateMarkupBlock(revised,"PRE-HEAD","MarkupPreHead");
revised = updateMarkupBlock(revised,"POST-HEAD","MarkupPostHead");
revised = updateMarkupBlock(revised,"PRE-BODY","MarkupPreBody");
revised = updateMarkupBlock(revised,"POST-SCRIPT","MarkupPostBody");
return revised;
};
//
// UploadLog
//
// config.options.chkUploadLog :
// false : no logging
// true : logging
// config.options.txtUploadLogMaxLine :
// -1 : no limit
// 0 : no Log lines but UploadLog is still in place
// n : the last n lines are only kept
// NaN : no limit (-1)
bidix.UploadLog = function() {
if (!config.options.chkUploadLog)
return; // this.tiddler = null
this.tiddler = store.getTiddler("UploadLog");
if (!this.tiddler) {
this.tiddler = new Tiddler();
this.tiddler.title = "UploadLog";
this.tiddler.text = "| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |";
this.tiddler.created = new Date();
this.tiddler.modifier = config.options.txtUserName;
this.tiddler.modified = new Date();
store.addTiddler(this.tiddler);
}
return this;
};
bidix.UploadLog.prototype.addText = function(text) {
if (!this.tiddler)
return;
// retrieve maxLine when we need it
var maxLine = parseInt(config.options.txtUploadLogMaxLine,10);
if (isNaN(maxLine))
maxLine = -1;
// add text
if (maxLine != 0)
this.tiddler.text = this.tiddler.text + text;
// Trunck to maxLine
if (maxLine >= 0) {
var textArray = this.tiddler.text.split('\n');
if (textArray.length > maxLine + 1)
textArray.splice(1,textArray.length-1-maxLine);
this.tiddler.text = textArray.join('\n');
}
// update tiddler fields
this.tiddler.modifier = config.options.txtUserName;
this.tiddler.modified = new Date();
store.addTiddler(this.tiddler);
// refresh and notifiy for immediate update
story.refreshTiddler(this.tiddler.title);
store.notify(this.tiddler.title, true);
};
bidix.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir, backupDir) {
if (!this.tiddler)
return;
var now = new Date();
var text = "\n| ";
var filename = bidix.basename(document.location.toString());
if (!filename) filename = '/';
text += now.formatString("0DD/0MM/YYYY 0hh:0mm:0ss") +" | ";
text += config.options.txtUserName + " | ";
text += "[["+filename+"|"+location + "]] |";
text += " [[" + bidix.basename(storeUrl) + "|" + storeUrl + "]] | ";
text += uploadDir + " | ";
text += "[[" + bidix.basename(toFilename) + " | " +toFilename + "]] | ";
text += backupDir + " |";
this.addText(text);
};
bidix.UploadLog.prototype.endUpload = function(status) {
if (!this.tiddler)
return;
this.addText(" "+status+" |");
};
//
// Utilities
//
bidix.checkPlugin = function(plugin, major, minor, revision) {
var ext = version.extensions[plugin];
if (!
(ext &&
((ext.major > major) ||
((ext.major == major) && (ext.minor > minor)) ||
((ext.major == major) && (ext.minor == minor) && (ext.revision >= revision))))) {
// write error in PluginManager
if (pluginInfo)
pluginInfo.log.push("Requires " + plugin + " " + major + "." + minor + "." + revision);
eval(plugin); // generate an error : "Error: ReferenceError: xxxx is not defined"
}
};
bidix.dirname = function(filePath) {
if (!filePath)
return;
var lastpos;
if ((lastpos = filePath.lastIndexOf("/")) != -1) {
return filePath.substring(0, lastpos);
} else {
return filePath.substring(0, filePath.lastIndexOf("\\"));
}
};
bidix.basename = function(filePath) {
if (!filePath)
return;
var lastpos;
if ((lastpos = filePath.lastIndexOf("#")) != -1)
filePath = filePath.substring(0, lastpos);
if ((lastpos = filePath.lastIndexOf("/")) != -1) {
return filePath.substring(lastpos + 1);
} else
return filePath.substring(filePath.lastIndexOf("\\")+1);
};
bidix.initOption = function(name,value) {
if (!config.options[name])
config.options[name] = value;
};
//
// Initializations
//
// require PasswordOptionPlugin 1.0.1 or better
bidix.checkPlugin("PasswordOptionPlugin", 1, 0, 1);
// styleSheet
setStylesheet('.txtUploadStoreUrl, .txtUploadBackupDir, .txtUploadDir {width: 22em;}',"uploadPluginStyles");
//optionsDesc
merge(config.optionsDesc,{
txtUploadStoreUrl: "Url of the UploadService script (default: store.php)",
txtUploadFilename: "Filename of the uploaded file (default: in index.html)",
txtUploadDir: "Relative Directory where to store the file (default: . (downloadService directory))",
txtUploadBackupDir: "Relative Directory where to backup the file. If empty no backup. (default: ''(empty))",
txtUploadUserName: "Upload Username",
pasUploadPassword: "Upload Password",
chkUploadLog: "do Logging in UploadLog (default: true)",
txtUploadLogMaxLine: "Maximum of lines in UploadLog (default: 10)"
});
// Options Initializations
bidix.initOption('txtUploadStoreUrl','');
bidix.initOption('txtUploadFilename','');
bidix.initOption('txtUploadDir','');
bidix.initOption('txtUploadBackupDir','');
bidix.initOption('txtUploadUserName','');
bidix.initOption('pasUploadPassword','');
bidix.initOption('chkUploadLog',true);
bidix.initOption('txtUploadLogMaxLine','10');
/* don't want this for tiddlyspot sites
// Backstage
merge(config.tasks,{
uploadOptions: {text: "upload", tooltip: "Change UploadOptions and Upload", content: '<<uploadOptions>>'}
});
config.backstageTasks.push("uploadOptions");
*/
//}}}
{{{
todo
- korte opsomming geven van varianten van metadatastandaarden ter illustratie van het begrip
}}}
{{{
todo
- proces van "het vergelijken van resources" toelichten
- waarom
- wanneer
- wie
- hoe
}}}
*geen
*volgens bepaalde syntax of standaard
*uit een woordenlijst, thesaurus of taxonomie
*volgens een bepaalde workflow
*inclusief (peer) review
*kenmerken van de resources
**identificerende kenmerken
**kenmerken over de levenscyclus
**technische kenmerken
**abstracte kenmerken
**kenmerken over het toepassingsgebied
**kenmerken van de doelgroep
**kwalitatieve kenmerken
**meetbare kenmerken
*gebruik van de resources
**kenmerken van de gebruikers
**wanneer is de resource gebruikt
**hoe lang is de resource gebruikt
**in welke context is de resource gebruikt
*om resources te kunnen [[vinden|Zoeken naar resources]]
*om resources te kunnen [[vergelijken|Vergelijken van resources]] (kiezen/beoordelen)
*om resources te kunnen [[beschrijven|Beschrijven van resources]] (ervaring/beoordelingen vastleggen)
*om resources te [[analyseren|Analyseren van resources]] (grootschalige vergelijkingen, inventariseren)
* voordat de resource er is
* tijdens de totstandkoming van de resource
* nadat de resource bekend is
* op één moment of gedurende een langere periode
*technische kwaliteit
*nauwkeurigheid
*effectiviteit
*beoordeeld volgens subjectieve criteria
*beoordeeld volgens objectieve criteria
*persoonsgebonden of (gebruikers)groep gebonden kwaliteit
{{{
todo
- proces van "het zoeken en vinden van resources" toelichten
- waarom
- wanneer
- wie
- hoe
}}}
Een informatieblokje in een TiddlyWiki omgeving. Zie ook de officiële omschrijving: http://tiddlywiki.com/#Tiddler.
On thursday the 27th of september 2007 the google search for "[[web 73.0|http://www.google.nl/search?q=%22web+73.0%22&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:nl:official&client=firefox-a]]" resulted in zero hits.
This was the first search with zero hits as a result starting from "web 0.0" to "1.0" and "web 2.0", etc. etc.
I didn't look into most of the results, but it comes to show that tagging by itself turns out to be a hobby of some people.
On thursday 15 november I did the same google search, which resulted in one hit: http://www.picobay.com/