Help:Eigenschappen en types

Eigenschappen en types zijn de basismanier om semantische gegevens in te voeren in Semantic MediaWiki. Eigenschappen kunnen worden gezien als "categorieën voor waarden in wiki-pagina's". Ze kunnen worden toegepast met een eenvoudige opmaak, die lijkt op de syntax van verwijzingen in MediaWiki:


 *  eigenschapnaam::waarde  

Dit statement definieert een waarde voor de eigenschap van de gegeven eigenschapnaam. De pagina waar dit gebruikt wordt zal alleen de tekst tonen voor waarde en niet de toekenning van de eigenschap.

Bestaande verwijzingen kunnen direct worden verrijkt met zulke eigenschapinformatie, terwijl andere typen gegevens (zoals getallen of kalenderdata) een extra bewerkingsstap vereisen.

Verwijzingen omzetten in eigenschappen
Neem het Wikipedia-artikel over Berlijn in gedachten. Dit artikel bevat vele verwijzingen naar andere artikelen, zoals "Duitsland", "Europese Unie" en "Verenigde Staten". De verwijzing naar "Duitsland" heeft echter een speciale betekenis: die staat daar omdat Berlijn de hoofdstad van Duitsland is. Om deze kennis beschikbaar te maken voor computerprogramma's dient men de verwijzing

Duitsland

in de artikeltekst te "taggen", waarmee zij geïdentificeerd wordt als een verwijzing die een "hoofdstadeigenschap" beschrijft. Met Semantic MediaWiki wordt dit bereikt door een eigenschapnaam en :: voor de verwijzing tussen de vierkante haken te plaatsen, als volgt:

hoofdstad van::Duitsland

In het artikel wordt deze tekst nog steeds weergegeven als een eenvoudige hyperlink naar "Duitsland". De toegevoegde tekst hoofdstad van is de naam van de eigenschap die de verwijzing naar Duitsland classificeert. Zoals in het geval van categorieën is de naam van de eigenschap willekeurig gekozen, maar dienen gebruikers te trachten om eigenschappen die ergens anders al voorkomen, te hergebruiken.

Om dit hergebruik te vereenvoudigen heeft elke eigenschap zijn eigen artikel in de wiki, net zoals elke categorie een artikel heeft. U kunt alle gebruikte eigenschappen in de wiki bekijken via de pagina Special:Properties. Net zoals categorie-artikelen de prefix Category: hebben, krijgen alle eigenschap-artikelen de prefix Property: om ze te onderscheiden van andere artikelen. U kunt ook MediaWiki's Special:Search-pagina gebruiken om bestaande eigenschappen te vinden. Zoals bij categorieën kan een artikel over een eigenschap leeg zijn, maar het is sterk aangeraden om een beschrijving toe te voegen die de bedoeling van de eigenschap en het juiste gebruik ervan uitlegt.

Er zijn meerdere manieren om eigenschappen aan pagina's toe te voegen:

Waardes in de tekst omzetten naar eigenschappen
Er staat meer nuttige informatie in wiki-artikelen naast verwijzingen naar andere artikelen. Er is bijvoorbeeld een getal in het artikel over Berlijn waarin het aantal inwoners gegeven wordt. Om deze kennis beschikbaar te maken aan computerprogramma's, zou men de tekst

3,396,990 willen "taggen", waarmee hij geïdentificeerd wordt als een waarde voor de "aantal inwoners-eigenschap". Met Semantic MediaWiki wordt dit bereikt door de eigenschapnaam en :: voor de tekst te zetten en  vierkante haken eromheen te zetten, als volgt:

aantal inwoners::3,396,990.

Dit werkt prima. Het creëert echter een verwijzing naar een pagina '3,396,990'' en een artikel voor elke mogelijke bevolkingsgrootte heeft waarschijnlijk niet zoveel zin. Verder, als u een lijst wilde maken van alle Duitse steden op volgorde van bevolkingsgrootte, dan is de numerieke volgorde anders dan de alfabetische volgorde die u zou verwachten voor artikelnamen. In alfabetische volgorde komt "1,000,000" bijvoorbeeld vóór "345".

Types eigenschappen
We willen in staat zijn om Semantic MediaWiki te vertellen dat "aantal inwoners" een getal is en niet een verwijzing naar een pagina in de wiki. De manier om dit te bewerkstelligen is om een type te specificeren voor de eigenschap "aantal inwoners". Semantic MediaWiki heeft meerdere ingebouwde datatypes die we kunnen kiezen voor eigenschappen. Voor ons inwonersvoorbeeld heet het passende type Number; de prefix "Type:" is wederom een aparte naamruimte die beschrijvende artikelen over typers onderscheidt van normale pagina's. We willen de eigenschap "aantal inwoners" een speciale eigenschap geven waardoor duidelijk wordt dat het van het "type:number" is. Om dit mogelijk te maken heeft Semantic MediaWiki een ingebouwde speciale eigenschap met de naam Property:Has type. We gebruiken dezelfde syntax voor deze speciale eigenschap als voor elke andere eigenschap, dus in het artikel Property:aantal_inwoners schrijven we:

has type::number

(het is niet nodig dat u hier de Type: naamruimte specificeert.)

Semantic MediaWiki kent een aantal speciale eigenschappen zoals Property:has type. Ongeacht of deze eigenschappen hun eigen artikelen hebben in de wiki, hebben ze een speciale ingebouwde betekenis en worden ze niet geëvalueerd zoals andere eigenschappen.

Datatypes
Datatypes zijn erg belangrijk voor het evalueren van eigenschappen. Ten eerste bepaalt het datatype hoe programmatuur de gegeven waardes dienen te behandelen, bijvoorbeeld voor het weergeven en sorteren van waarden in zoekresultaten. Ten tweede is het datatype vereist om te begrijpen welke waardes dezelfde betekenis hebben. De waardes "1532", "1,532" en "1.532e3" zijn bijvoorbeeld allemaal representaties van hetzelfde getal. Tenslotte hebben sommige datatypes een speciaal gedrag, zoals hierna beschreven wordt. Om deze redenen heeft elke eigenschap een datatype, dat wordt genoemd op de pagina Special:Properties.

De reden dat we geen datatype hoefden te specificeren voor de "hoofdstad van"-eigenschap hierboven is dat het standaard datatype Page is, wat een verwijzing weergeeft. (Merk op dat als u het datatype van een eigenschap later wijzigt, dit geen effect heeft op de annotaties van bestaande artikelen totdat zij opnieuw worden opgeslagen of opgeschoond.) Ondanks dat Type:Page de standaardinstelling is, behoort u voor elke eigenschap expliciet een datatype op te geven, al was het alleen maar om verwarring te voorkomen, of het later herdefiniëren met een onbedoeld type.

Dezelfde opmaak voor eigenschappen die verwijzingen naar pagina's vormen, werkt ook voor eigenschappen van andere datatypes. Hier zijn enkele voorbeelden.

Datatypes en maateenheden
Met behulp van verschillende types, kunnen eigenschappen worden gebruikt om zeer uiteenlopende soorten waarden te beschrijven. Een volledige lijst van beschikbare types is te vinden op Special:Types. Basistypen zijn onder andere:

Deze kunnen creatief worden toegepast voor zeer verschillende doeleinden. Eigenschappen van het type string kunnen bijvoorbeeld worden gebruikt om telefoonnummers te coderen (die niet-numerieke symbolen kunnen bevatten).
 * Help:Type String (tekst)
 * Help:Type Number (gehele en decimale getallen met optionele exponent)
 * Help:Type Page (verwijzingen naar pagina's, standaard)

Units
Type:Number maakt het mogelijk om waardes te onderscheiden bij een eenheid (bijv. "30.3 mpg" versus "47 km/liter"), maar weet niet hoe tussen de twee eenheden geconverteerd dient te worden. Om automatische conversie en meerdere eenheidsformaten toe te staan, kunt u uw eigen datatype definiëren met aangepaste eenheden. Deze converteren waardes automatisch van en naar standaardrepresentaties, zodat gebruikers vrij zijn om hun voorkeurseenheid te gebruiken in elk artikel en desondanks in staat zijn om te zoeken naar en te vergelijken met eigenschapswaarden in andere artikelen.

Speciale datatypes
Er zijn enkele speciale ingebouwde datatypes die meer gecompliceerde formaten en eenheidsconversies ondersteunen.


 * Help:Type Boolean beperkt de waarde van een eigenschap tot true/false (ofwel 1/0 en yes/no).
 * Help:Type Text is zoals Type:String maar heeft een onbeperkte lengte;
 * Help:Type Temperature kan niet gebruikersgedefinieerd zijn omdat het converteren van temperatuureenheden gecompliceerder is dan vermenigvuldigen met een conversiefactor.
 * Help:Type Geographic coordinate beschrijft geografische locaties. Het herkent verschillende vormen van geografische coördinaten. Met behulp van service links kan het dynamisch verwijzingen geven naar online kaartdiensten.
 * Help:Type Date specificeert bepaalde tijdstippen. Dit type is nog steeds een beetje experimenteel, maar zou in de toekomst conversies kunnen uitvoeren tussen (historische) kalendermodellen.

Voor het specificeren van URLs en e-mails zijn er een aantal speciale variaties op het string-datatype:
 * Help:Type URL geeft een externe verwijzing weer naar zijn URL-object.
 * Help:Type Annotation URI: eigenschappen van dit type worden geïnterpreteerd als relaties met externe objecten, die worden aangegeven met de URI. Ze zijn speciaal omdat ze worden geïnterpreteerd als annotatie-eigenschappen bij export. Zie de pagina van het type voor documentatie.
 * Help:Type Email toont een verwijzing naar een e-mailadres (met mailto: ).

SMW heeft geen "opsomming"-datatype; in plaats daarvan kunt u voor elke eigenschap de mogelijke waarden limiteren met behulp van de speciale eigenschap Property:Allows value om de toegestane waarden op te sommen. Dit werkt voor elk datatype.

Eigenschappen met meerdere types
In de natuurlijke mensentaal is het makkelijk om meerdere feiten tegelijkertjid te introduceren. Bijvoorbeeld: "John F. Kennedy was de 35e president van de V.S. en was in functie van 1961 tot aan de moordaanslag op hem in 1963." Dit is informatie over John F. Kennedy die thuishoort op zijn wikipagina, maar het verschuift naar informatie over zijn presidentschap. U zou gewoonweg een eigenschap "Presidentschap_details" van Type:String kunnen maken en daar de tekst in zetten. Maar dit zal alleen betekenis hebben voor mensen, u kunt er geen zoekopdrachten op uitvoeren of het sorteren om een lijst van presidenten te produceren.

U kunt semantische annotaties niet nesten, dus u kunt geen string-eigenschap hebben die bijkomende annotaties bevat.

Vaak is de beste manier om dit te representeren om een artikel te maken voor het voorwerp van de eigenschap, zodat dit geannoteerd kan worden met de extra informatie. De eigenschap "Heeft_presidentschap" zou dan van Type:Page zijn en het artikel "Presidentschap van JFK" heeft dan de eigenschappen Van_land::V.S., Nummer:35, Startdatum:1961-01-20, Einddatum:1963-11-22, etc. Wikipedia vindt zogeheten "beginnetjes"-artikelen afkeurenswaardig, maar in een semantische wiki zijn ze op hun plaats omdat ze informatie verschaffen voor semantische zoekopdrachten.

Het is tevens mogelijk om een eigenschap aan te maken in Semantic MediaWiki die meerdere waarden meekrijgt. Deze worden smos "n-ary relaties" genoemd. Dus "Heeft_presidentschap" zou Type:Page; Type:Number; Type:Date; en Type:Date kunnen hebben, waar de vier waarden staan voor het land, het hoeveelste presidentschap, de startdatum en de einddatum. Zie Help:Meerwaardige eigenschappen voor meer informatie.

Speciale eigenschappen
We hebben de speciale eigenschap Property:Has type genoemd, die u kunt gebruiken om SMW het datatype van de eigenschap te vertellen. SMW heeft andere voorgedefinieerde speciale eigenschappen die een speciale betekenis hebben (zelfs als u geen eigenschappagina's ervoor aanmaakt in uw wiki). U kunt deze namen niet gebruiken voor uw eigen eigenschappen. In SMW 1.0 is de lijst van speciale eigenschappen
 * Allows value, Corresponds to, Display units, Equivalent URI, Has type, Imported from, Provides service en Subproperty of.

Daarnaast is Display unit een alias voor Display units.

Deze interne speciale eigenschappen verschijnen niet in de lijst Special:Properties, u kunt er niet naar zoeken en een pagina over een speciale eigenschap toont niet de pagina's die deze eigenschap gebruiken.

"Relaties" en "Attributen" in oudere versies
In oudere versies van SMW, waren eigenschappen met type Page bekend als relaties en slechts deze gebruikten twee opeenvolgende dubbele punten (::) als scheidingsteken tussen eigenschapnaam en verwijzingstekst. Alle andere eigenschappen (getallen, teksten etc.) waren bekend als attributen en moesten 'dubbele punt is gelijk' (:=</tt>) gebruiken als scheidingsteken.

SMW 1.0 verenigt relaties en attributen onder de noemer eigenschappen en gebruikt een enkele naamruimte "Property:". Het standaard datatype voor ongedeclareerde eigenschappen is Page maar het is sterk aangeraden om het datatype van elke eigenschap te declareren om het bedoelde gebruik te verklaren naar andere redacteuren. SMW ondersteunt nog steeds :=</tt> maar het is aan te raden om ::</tt> te gebruiken voor alle eigenschappen-annotaties. De reden is dat het is-gelijk-symbool dat voorkomt in :=</tt> niet netjes gebruikt kan worden binnen MediaWiki-sjabloonparameters, waar ::</tt> geen problemen veroorzaakt in de meeste omgevingen.

Zie Upgrading from SMW 0.7 to SMW 1.0|Opwaarderen van SMW 0.7 naar 1.0 voor andere wijzigingen in SMW 1.0; als u nog de oudere versie van SMW gebruikt, raadpleeg dan ow:Help:Annotation (SMW0.7) voor documentatie van annotaties in versie 0.7.