Open Universiteit Nederland Afstudeeropdracht Bachelor Informatica Run Januari 2009 Project: “Semantic Friendly Forms” Ontwikkeling van een Extensie voor MediaWiki Opdrachtgever: Dr. Lloyd Rutledge, OU Nederland Begeleider: Ir. Paul Oord, OU Nederland Door: Henri Gerrits Rens te Kloese
Agenda Opdracht en doelstelling Omgeving Product Implementatie Ontwikkelingsproces Evaluatie en advies Conclusie Vragen
1. Opdracht en Doelstelling Opdracht: extensie op Semantic MediaWiki Hoofddoelstellingen: Vriendelijker gebruikersinterface Meer semantische functies Nevendoelstellingen: Onderzoek en experimenteren Cursus Capita Selecta
2. Omgeving Breed en diep Wiki-infrastructuur: Semantiek: MediaWiki (MW) Semantic MediaWiki (SMW) Semantic Forms (SF) Semantiek: Resource Description Framework (RDF) RDF Schema (RDF/S) Web Ontology Language (OWL) Semantic Web MediaWiki Extensions Semantic Friendly Forms Semantic MediaWiki Semantic Forms Parser Functions MySQL 5
2.1 Omgeving: Infrastructuur MW “Media Wiki” (ontwikkeld 2002-heden) Open source applicatie voor ‘runnen’ van wiki’s Webtechnologie Uitbreidbaar Toepassingen: Wikipedia, Bibliotheken, Social networks en kennisdeling
2.2 Omgeving: Infrastructuur SMW “Semantic MediaWiki” (2005-heden) Open source extensie op MediaWiki Voegt semantiek toe via: Properties en Types, Querytaal, Exportmogelijkheid SF “Semantic Forms” (2007-heden) Open source extensie op MediaWiki en SMW Voegt formulieren toe voor creëren van: Properties, Templates, Forms, Pages
2.3 Omgeving: Semantiek RDF (W3C aanbeveling 2004) Meta-data model (relaties tussen “statements”) Formaat voor presentatie en uitwisseling van gegevens RDF/S (W3C aanbeveling 2004) Kennisrepresentatietaal Gebruikt syntax van RDF Biedt structuur aan RDF Levert basiselementen voor beschrijving van “lichtgewicht” ontologieën
2.3 Omgeving: Semantiek RDF (W3C aanbeveling 2004) Ontologie Meta-data model (relaties tussen “statements”) Formaat voor presentatie en uitwisseling van gegevens RDF/S (W3C aanbeveling 2004) Kennisrepresentatietaal Gebruikt syntax van RDF Biedt structuur aan RDF Levert basiselementen voor beschrijving van “lichtgewicht” ontologieën Ontologie Definitie: “het product van een poging een uitputtend en strikt conceptueel schema te formuleren over een bepaald domein” (wikipedia)
2.4 Omgeving: Semantiek OWL (W3C aanbeveling 2004) Kennisrepresentatietaal (beschrijft ontologieën) Breidt RDF/S uit met restricties Open World Assumption
“Semantic Friendly Forms” (SFF) 3. Product Opdracht: extensie op Semantic MediaWiki Hoofddoelstellingen: Vriendelijker gebruikersinterface (opnieuw bewerken, navigatie, autocompletion, beheer etc.) Meer semantische functies (RDF/S & OWL) “Semantic Friendly Forms” (SFF) Tool voor het opzetten en onderhouden van ontologieën m.b.v. wiki-technologie
3.1 Product: Opnieuw bewerken Probleem: SF kan wel creëren maar niet bewerken Oplossing: toevoegen van bewerkfunctie
3.2 Product: Navigatie Probleem: bij SF steeds terug naar Special Pages Oplossing: toevoegen van hyperlinks
3.3 Product: Autocompletion Probleem: bij SF alleen vorige input beschikbaar Oplossing: autocompletion uit namespace context
3.4 Product: Domain Speciale eigenschap van Property: “Has domain” Voorgedefinieerde SFF Property Gebaseerd op rdfs:domain Meerwaardig (categories) Invoer via Property-formulier Gebruikt bij genereren van Templates
3.5 Product: Range Speciale eigenschap van Property “Has range” Voorgedefinieerde SFF Property Gebaseerd op rdfs:range Meerwaardig (categories) Invoer via Property-formulier Mogelijk gebruik bij autocompletion (niet geïmplementeerd)
3.6 Product: InverseOf Speciale eigenschap van Property “Is inverse of” Voorgedefinieerde SFF Property Gebaseerd op owl:inverseOf Meerwaardig (properties) Voorbeeld: ouder-kindrelaties Invoer via Property-formulier Gebruikt bij tonen ‘impliciete’ properties Implementatie niet 100% → gedeactiveerd
3.7 Product: Symmetric Speciale eigenschap van Property “Is symmetric” Voorgedefinieerde SFF Property Gebaseerd op owl:SymmetricProperty Boolean Voorbeeld: buur-relaties Invoer via Property-formulier Speciaal geval van InverseOf Gebruikt bij tonen ‘impliciete’ properties Implementatie niet 100% → gedeactiveerd
3.8 Product: Label & Comment Speciale eigenschap van Property “Has label” en “Has comment” Voorgedefinieerde SFF Properties Gebaseerd op rdfs:label, rdfs:comment Geen semantische waarde Invoer via Property-formulier Label gebruikt bij genereren van Templates
3.9 Product: Demo OWL Wiki Forms
3.9 Product: Demo OWL Wiki Forms Template/Form: Report Category: Reports Property: Student Template/Form: Person Category: People
3.10 Product: Terugkoppeling Projectplan Vriendelijker gebruikersinterface: 0.0 Hiding Properties 1.1 Edit Form 1.2 Edit Template 1.3 Edit Property 2.2 Semantic browser 2.3.1 Autocompletion Semantische constructies: 3.1 Domain 3.2 Label 3.3 Comment 3.4 InverseOf 3.6 Range 3.7 Symmetric
4. Implementatie Resultaat Bronnen Knelpunten
4.1 Implementatie: Resultaat Deliverables: MediaWiki-extensie Gebruikersdocumentatie “Project documentation” Meest recente versies MW, SMW en SF ondersteund Technologie: Server side: PHP Client side: JavaScript/YUI (autocompletion) Meertalig: Nederlands Engels
4.2 Implementatie: Bronnen Consulten: Markus Krötzsch (AIFB Karlsruhe, SMW, OWL 2) Rinke Hoekstra (UvA, OWL 2) Internet: MediaWiki en extensies SMW en SF Standaarden van RDF/S en OWL Semantisch Web (Web 3.0) PHP
4.3 Implementatie: Knelpunten Nauwelijks “extension points” → duplicatie Geen stabiele API → compatibiliteitsproblemen Gebrekkige documentatie: MediaWiki en extensies → reverse engineering PHP als taal → bugs PHP is scripttaal → geen compilatie → bugs Programmeerstijl: Global functions & variables → moeilijk uitbreiden / testen → bugs Lange functies → moeilijk begrijpen / uitbreiden / testen → bugs
4.3 Implementatie: Knelpunten Nauwelijks “extension points” → duplicatie Geen stabiele API → compatibiliteitsproblemen Gebrekkige documentatie: MediaWiki en extensies → reverse engineering PHP als taal → bugs PHP is scripttaal → geen compilatie → bugs Programmeerstijl: Global functions & variables → moeilijk uitbreiden / testen → bugs Lange functies → moeilijk begrijpen / uitbreiden / testen → bugs Open Source ?
5. Ontwikkelingsproces Hoofdfasering: Incrementele ontwikkeling: Team: Voorbereidingsfase → Scope Uitvoeringsfase → Product Afsluitfase → Documentatie Incrementele ontwikkeling: Explorerend, snelle terugkoppeling Per functie: analyse, ontwerp, implementatie Team: 3 → 2 personen Taakverdeling
6. Evaluatie en advies Open punten Verdere ontwikkeling Proces
6.1 Evaluatie: Open Punten Niet afgemaakte functionaliteit: InverseOf Symmetric Niet “gebruikte” functionaliteit: Range Comment Dynamische autocompletion Security?
6.2 Evaluatie: Verdere Ontwikkeling Integreren met SF Uitbreiden van Semantic Web met meer functionaliteit, zoals: Meer constructies uit RDF/S en OWL Relatie met “Knowledge Management”: Beheer van semantische data Exchange-functie voor semantische data Redeneren met semantische data SPARQL queries op MediaWiki data Ondersteuning consistentiebeheer
Semantic Web Data Source Layer XHTML pages + RDF-A data Semantic Web App.1 SMW App. 2 Representation Layer RDF Triple Store 1 RDF Triple Store 2 Knowledge Layer SPARQL Query RDF Editor OWLIM Reasoner
Semantic Web Data Source Layer XHTML pages + RDF-A data Semantic Web App.1 SMW App. 2 Extract data Representation Layer RDF Triple Store 1 RDF Triple Store 2 Read data Knowledge Layer SPARQL Query RDF Editor OWLIM Reasoner
Semantic Web Data Source Layer XHTML pages + RDF-A data Semantic Web App.1 SMW App. 2 Extract data Upload data Representation Layer RDF Triple Store 1 RDF Triple Store 2 Read data Store data Knowledge Layer SPARQL Query RDF Editor OWLIM Reasoner
6.3 Evaluatie: Proces Steile leercurve Team: Uitval teamlid Afstand en tijdverschil overbrugbaar Communicatie met opdrachtgever: Effectief Incrementele ontwikkeling: Effectief voor dit project “Risico”: nieuwe wensen en eisen
7. Conclusie Nuttige functionaliteit gezien opdracht Advies: integreren met SF Ruimte voor verdere ontwikkeling Open source is niet perfect
8. Vragen ?