Status: | draft |
Progress: | 75% |
Version: | 1.0+ |
SMW handleiding |
---|
Introductie |
Bladeren en zoeken |
Semantisch zoeken |
Pagina's selecteren |
Bewerken |
Eigenschappen en types |
Semantic Web |
OWL/RDF export |
SMW admin manual |
Semantische sjablonen zijn een methode om (delen van) de toegevoegde opmaak die Semantic MediaWiki introduceert, mee te nemen in MediaWiki-sjablonen. Dit heeft een aantal voordelen:
- gebruikers specificeren annotaties zonder nieuwe syntax te hoeven leren,
- annotaties worden consistent gebruikt, dus gebruikers hoeven niet et zoeken naar de juiste eigenschappen of categorieën bij het bewerken van een pagina,
- omdat sjablonen ook andere functies hebben, zoals het weergeven van flitsende infoboxjes in een artikel, zijn gebruikers gemotiveerd om ze te gebruiken.
Om deze redenen raden we aan dat u semantische sjablonen gebruikt bij het introduceren van semantiek in een wiki.
Contents
Eenvoudige semantische sjablonen – een voorbeeld[edit]
Sjablonen, met of zonder semantiek, kunnen een erg eenvoudige vorm hebben. Bijvoorbeeld bij het geven van de waarde van de oppervlakte van een astronomisch object in een wikipagina, wilt u dat misschien weergeven als
- 6.088 × 1018 m²
hetgeen u kunt bereiken door te schrijven
6.088 × 10<sup>18</sup> m²
Dit is omslachtig om te schrijven, dus u zou een sjabloon Template:Oppervlakte kunnen ontwikkelen voor oppervlaktes zodat redacteuren simpelweg dit kunnen schrijven:
{{surface area|6.088|18}}
en het sjabloon springt om naar uw gewenste opmaak.
MediaWiki-sjablonen hebben dus een immense waarde voor het normaliseren en simplificeren van de weergave in elke wiki (zodra gebruikers de sjabloon-syntax begrijpen).
Met de introductie van Semantic MediaWiki wilt u waarschijnlijk dat waardes voor 'oppervlakte' semantische annotaties worden zodat ze verschijnen in de factbox en dat u erop kunt zoeken. U zou dus een semantische eigenschap kunnen maken met de naam Property:Oppervlakte die een aangepast datatype [[Type:Oppervlakte]] (her)gebruikt. Natuurlijk wenst u zowel de annotatie te hebben als de visuele representatie. U zou het volgende kunnen schrijven:
[[Oppervlakte::6.088e18 m²|6.088 × 10<sup>18</sup> m²]]
de semantische annotatie gebruikt het wetenschappelijke formaat voor een getal waar Semantic MediaWiki mee om kan gaan en de alternatieve tekst na het pijplijnsymbool '|' is de complexe weergave die u wilt.
Maar dit is nog minder gebruiksvriendelijk en zeer vatbaar voor fouten. Met gebruikmaking van semantische sjablonen kunt u het Oppervlakte-sjabloon schrijven of aanpassen zodat de gecompliceerde opmaak verborgen wordt en de semantische annotatie tot stand brengen. Dan kunnen redacteuren, net als eerst, schrijven:
{{oppervlakte|6.088|18}}
wat veel leesbaarder is. Om dit voor elkaar te krijgen, is Template:Oppervlakte als volgt gecodeerd:
[[Oppervlakte::{{{1}}}e{{{2}}} m²|{{{1}}} × 10<sup>{{{2}}}</sup> m²]]
Zie de voorbeeldpagina Sol en bekijk de bron om dit semantische sjabloon in werking te zien.
Merk op dat de eigenschap "oppervlakte::" in het sjabloon niet het sjabloonartikel zelf annoteert; het treedt pas in werking wanneer het ingevoegd wordt. Dit is omdat de standaardinstelling bij het installeren van Semantic MediaWiki is dat SMW de pagina's in de Template:-naamruimte niet analyseert op semantische annotaties. Mocht deze instelling gewijzigd zijn (door de site-beheerder) dan dient u om de sjablooncode heen <includeonly>-tags te zetten om te voorkomen dat het sjabloonartikel zelf geannoteerd wordt. Zoals bij een gewoon MediaWiki-sjabloon kunt u tekst toevoegen binnen <noinclude>-tags om gebruikersdocumentatie aan te bieden op de sjabloonpagina.
Ingewikkeldere semantische sjablonen[edit]
Veel MediaWiki-sites maken gebruik van gecompliceerdere sjablonen om standaardinformatie te tonen. Wikipedia-artikelen over steden en dorpen gebruiken bijvoorbeeld standaardsjablonen waarin redacteuren algemene informatie-items invullen, zoals deze (van wikipedia:San Diego, California):
{{Infobox Settlement |image_skyline = Sandiego_skyline_at_night.JPG |imagesize = |image_caption = San Diego Skyline | March 31, 2007 |official_name = City of San Diego |settlement_type = [[City]] |nickname = America's Finest City |motto = Semper Vigilans ([[Latin]]: Ever Vigilant) |image_flag = Flag of San Diego, California.svg ...
Normaal gesproken geeft het sjabloon (in dit geval wikipedia:Template:Infobox Settlement) deze informatie weer in een netjes opgemaakte tabel. Natuurlijk zijn zulke volgens vaste patronen ingedeelde stukjes informatie ideaal om getransformeerd te worden naar eigenschappen in Semantic MediaWiki zodat artikelen die het sjabloon gebruiken semantische annotaties verkrijgen zonder enige wijzigingen in hun pagina's.
De voorbeeldpagnia Demo:California toont een eenvoudig "infobox"-weergavesjabloon dat is aangepast om semantische annotaties te maken.
Correct gebruik van semantische sjablonen[edit]
Hoewel het patroon hierboven u in staat stelt om alle soorten semantische sjablonen te maken van willekeurige complexiteit, zijn er nog wat punten om rekening mee te houden.
Automatische annotatie vereist strikte formaten[edit]
U kunt sjabloonvelden automatisch annoteren, maar in dit geval moeten de aangeboden waarden voldoen aan het verwachte formaat. Het is bijvoorbeeld een goed idee om het aantal inwoners van een stad te annoteren met een eigenschap van type 'number'. Echter, in een infobox-sjabloon als die op wikipedia:France, is de opgegeven waarde voor aantal inwoners geen enkel getal, of zelfs maar een set van getallen! In plaats daarvan zijn er meerdere getallen en tekstuele toelichting van wat ze betekenen. Zulke speciale gevallen moeten in gedachten gehouden worden bij het ontwerpen van semantische sjablonen.
Er is daarnaast een belangrijke reden waarom semantische sjablonen geen passende vervanging zijn voor annotaties in Semantic MediaWiki. Er zijn gevallen waar bestaande sjablonen geëvalueerd kunnen worden op een behoorlijk semantische wijze, maar vaak moet de gebruiker nog semantische opmaak toevoegen om de gegevens machine-verwerkbaar te maken. In het geval van Frankrijk, zou men kunnen beslissen om "aantal inwoners" een normaal tekstveld te laten zijn en het aan de gebruiker over te laten om [[aantal inwoners::...]] te specificeren waar dat van toepassing is in deze tekst.
Optionele invoer en voorwaardelijken[edit]
In het algemeen is het bij sjablonen erg nuttig om optionele parameters toe te staan. Bij veel artikelen willen of kunnen gebruikers niet alle mogelijke waarden van een gegeven infobox invullen, en het zou vreemd zijn om lege regels te laten zien in zulke gevallen. Erger nog, semantische sjablonen zouden waarschuwingsberichten genereren vanwege het feit dat een lege waarde is geannoteerd. Om dit te voorkomen is het nuttig om "voorwaardelijken" te introduceren in de sjablooncode, die een regel (en de annotatie ervan) alleen meenemen als een niet-lege waarde werd ingevoerd.
Dit kan worden bereikt met hulp van de ParserFunctions-uitbreiding op MediaWiki. Het gebruik van deze uitbreiding is volledig onafhankelijk van Semantic MediaWiki, en u kunt de originele documentatie van deze uitbreiding raadplegen voor meer informatie. Wikipedia bevat vele voorbeelden van parser-functies in sjablonen, zoals bijvoorbeeld in wikipedia:Template:Taxobox. Het gebruik van parserfuncties resulteert meestal in lastig-te-lezen sjablooncode, maar de versimpeling voor gebruikers is substantieel.
Annotatie in een sjabloon[edit]
Ondersteuning voor het gebruik van annotaties dient ingeschakeld te worden door de sitebeheerder.
Wanneer een annotatietag is toegevoegd aan een sjabloon dan wordt op een pagina die het sjabloon reeds bevatte, de factbox bijgewerkt, maar zoekopdrachten houden nog geen rekening met de nieuwe annotatie. Om dat te bereiken, moet voor de pagina die het sjabloon bevat, eerst een bewerken- en opslaan-actie worden uitgevoerd (purge werkt niet). Daarna moet ook op de pagina met de zoekopdracht bewerken en opslaan worden uitgevoerd.
Een zoekopdracht in een sjabloon[edit]
Een zoekopdracht in een sjabloon is mogelijk, en het kan {{PAGENAME}} bevatten, zie bijv. ow:Template:Ask. Echter, een zoekopdracht met een template-parameter werkt alleen met substitutie en kan niet gebruikt worden in berekeningen. Zie ow:Property:Weekday_number — deze beperking is misschien niet langer van toepassing met SMW 1.0 wanneer men de {{#ask:}} functiesyntax gebruikt.