Smwcon spring2011 tutorial applied semantic mediawiki

70
Applied Semantic MediaWiki SMWCon Spring 2011 Tutorial #4 2011.04.28

description

The 4th tutorial on semantic mediawiki for SMWCon Spring 2011 By Jesse Wang, Ning Hu, and Wil Smith

Transcript of Smwcon spring2011 tutorial applied semantic mediawiki

Page 1: Smwcon spring2011 tutorial applied semantic mediawiki

Applied Semantic MediaWiki

SMWCon Spring 2011 Tutorial #42011.04.28

Page 2: Smwcon spring2011 tutorial applied semantic mediawiki

Who Are WeJesse Jiaxin Wang

Sr. Software Architect, Vulcan Inc.

http://semantic-mediawiki.org/wiki/User:Jesse

Ning HuSr. Software Developer, TeamMersion LLC

Wil SmithSoftware Engineer, Vulcan Inc.

Page 3: Smwcon spring2011 tutorial applied semantic mediawiki

3

About VulcanVulcan Inc. was established in 1986 by investor and philanthropist Paul G. Allen, co-founder of Microsoft, to manage his business and philanthropic efforts. Allen is chairman of Vulcan and his sister, Jody Allen, is president and CEO.

Page 4: Smwcon spring2011 tutorial applied semantic mediawiki

Agenda

Jumpstart Customize

Integrate

Page 5: Smwcon spring2011 tutorial applied semantic mediawiki

Jumpstart

Ways to quickly start a new wiki

Page 6: Smwcon spring2011 tutorial applied semantic mediawiki

Using a BundleSemantic Bundle

http://www.mediawiki.org/wiki/Semantic_Bundle

Features: (Pros and Cons)A set of author-selected extensions

A fixed set of extensions, few customization options

Simplified download and configuration processStill need manual configuration

Usually up-to-date and work well togetherCommunity tested and supported

Page 7: Smwcon spring2011 tutorial applied semantic mediawiki

Installation Package

SMW+ Package http://smwforum.ontoprise.com/smwforum/index.php/Help:SMW%2B

Features:A set of (fixed) company selected extensions

Simplifies installation and configurationWindows installer and VM images are great

And they just became free!

You may still be curious about what it does…

Professionally documented and testedUsually weeks after major release of latest SMW

Page 8: Smwcon spring2011 tutorial applied semantic mediawiki

Real-world Deployment

When you want a set of custom extensions, you want

Your OWN

deployment mechanism!

Page 9: Smwcon spring2011 tutorial applied semantic mediawiki

Deployment Practices

Your own codebase, with checkpointsSVN or Git to get the base, and then

Customize the wikiScript or Manual or Mixed

A third-party deployment framework and repository

Ontoprise: http://smwforum.ontoprise.com/smwforum/index.php/Help:Deployment_Framework

RPI: http://code.google.com/p/smwbp/wiki/setup_wiki

Referata: http://smw.referata.com/wiki/Category:Packages

Page 10: Smwcon spring2011 tutorial applied semantic mediawiki

Build SystemYou own it!

Your own selection of extensions

And versions of them

Own patches, scripts and templates

Vulcan: Internal GIT repositories of completed build

Versioning and branches between projects

Other examples:RPI Best Practice (Google code)

Hudson build (PNNL)

Page 11: Smwcon spring2011 tutorial applied semantic mediawiki

Wish ListA public wiki installation repository

with lots of packages

Including necessary data

Semantically marked up

Well documented (or even reviewed)

Easy to find and use

Federated wiki package store (Wiki AppStore)

Page 12: Smwcon spring2011 tutorial applied semantic mediawiki

Customize

Get your own functionality, look and feel

Page 13: Smwcon spring2011 tutorial applied semantic mediawiki

What to Customize

Skins

Extensions

Schema and Data

Templates and forms

Anything else you can code…

Page 14: Smwcon spring2011 tutorial applied semantic mediawiki

SkinsHow to customize a skin

Create your skin file in /skins folder within your wiki directory, like Ontoskin.php

Finish this skin files following Ontoskin.php skin filesThere are two classes in this skin files:

Inherit from SkinTemplate, set the CSS and template filter.

Inherit from QuickTemplate, set the UI style

Create skin folder with your skin name in /skinsCopy image and CSS files to your skin folder

Use your own skinIn LocalSettings.php set

$wgDefaultSkin = 'wiking_skin'

Page 15: Smwcon spring2011 tutorial applied semantic mediawiki

Seahawk Video Skin

Page 16: Smwcon spring2011 tutorial applied semantic mediawiki

Skin Customization

ExampleVulcan Development Wiki and Seahawk wiki.

We have customized these two skins for our projects and the key is the method of QuickTemplate. In this method, you can decide what to show and how it shows on your wiki

You can customize wiki site like menu links, page titles, CSS and JavaScript files in the data properties of QuickTemplate

For example, show wiki side bar in your skin<?php foreach ($this->data['sidebar'] as $bar => $cont) { ?> <li> <a href="#"><h5><?php $out = wfMsg( $bar );></h5></a> <ul> <?php foreach($cont as $key => $val) { ?> <li id="<?php echo $val['id'] ?>" > <a href="<?php echo $val['href'] ?>"><?php echo $val['text'] ?></a> </li> <?php } ?> </ul> </li><?php } ?>

Page 17: Smwcon spring2011 tutorial applied semantic mediawiki

Personalized SkinSkin supports customization via __USERNAME__

User can have personalized styles within a skin

http://www.mediawiki.org/wiki/Manual:Skin_configuration#User_CSS

Tip: A way to turn off Wikipedia banner ad:

http://en.wikipedia.org/wiki/User:Jesseone/vector.css

Page 18: Smwcon spring2011 tutorial applied semantic mediawiki

Schema and Data“Just do it!”

Easy to start

Flat, large ontology, at beginning

Many properties only valid in certain cases

But it’ll get better!

“Designer” OntologyProfessionally generated (Protégé)

More data (restriction) than necessary

Data importer isn’t powerful to fully support all OWL features

“The middle road” practical schema design: think, adapt, evolve

Page 19: Smwcon spring2011 tutorial applied semantic mediawiki

N-ary RelationsType:Record

From 1.5 + supports Semantic Search

Still no “Allowed values”, no unit, and no other visual customizations

Semantic Internal Object extension

Adding an object in the middle

Using parameterized (patterned) properties

Using a triple store (external)

Page 20: Smwcon spring2011 tutorial applied semantic mediawiki

ExtensionsWhere to find extensions

http://www.mediawiki.org/wiki/Extension_Matrix

By supported version (1.16, 1.17, …)

By status (beta, stable, …)

By type (API, AJAX, hook, user rights…)

By new-ness (sort by most recently created time)

By talk page new-ness…

By most updated versions…

Page 21: Smwcon spring2011 tutorial applied semantic mediawiki

Get the Extensions!

Some essential ones!http://semantic-mediawiki.org/wiki/Help:MediaWiki_extensions

Semantic MediaWiki extensions are quite a few:http://semantic-mediawiki.org/wiki/Help:SMW_extensions

Find what you want Not exactly? Then patch it!

Nothing close? Then build it!Or find people to build it

Page 22: Smwcon spring2011 tutorial applied semantic mediawiki

Our ExperiencesWe built several wikis (2008-2011)

The most useful extension (SF) often needed patches

Auto-completionFixed set of allowed values

All values in a category

All values having a specific property

All values from a query

More parameters support (default values, UID, etc.)

New functionality in other extensions or SMW CoreAggregation (average, max, sum, etc.)

e.g. > and < comparison

Page 23: Smwcon spring2011 tutorial applied semantic mediawiki

Security Extensions

Know thyself! – What you want, really.Often customers don’t know what they really want

Many choices = nothing is perfect

From basic to advanced:MediaWiki built-in security

Simple Security (Page Security)

HaloACL

Featu

res

Restrictio

ns

Page 24: Smwcon spring2011 tutorial applied semantic mediawiki

A Short StoryProposal Management System (Wiki)

Users (including privileged users) submit proposals

Reviewers (privileged users) rate and review them

Reviewers discuss and make decision and assign

What security extension should it employ?

HaloACL?

SimpleSecurity?

MediaWiki built-in groups?

Page 25: Smwcon spring2011 tutorial applied semantic mediawiki

How to Select | Test

Inclusion / transclusion

Special:Export

Aton/RSS feed, Watch page

Listing and SearchingSpecial:Search

RecentChanges, AllPages

Diff and Revision URL

Action links (raw, render)

API (???)Action=query?

3rd party APIs

Author backdoor?

Caching?

Files and Images?

Redirects?

Other extensions?

Page 26: Smwcon spring2011 tutorial applied semantic mediawiki

Visualization: Our Path

2008: SRF used to only have few options

2009: Exhibit seemed coolPorted webit

Fixed some bugs and enhanced features Runway, TimePlot, multiple rows in Map view etc.

2010: Open Flash ChartMore bars, pies, lines, scatter plot…

Interaction

Richer information display

Page 27: Smwcon spring2011 tutorial applied semantic mediawiki

Comparing SRF Options

Google Charts (pie and bar)Google does it! (G gets your data, no offline choice…)

Static bar and pie, no color options…

ExhibitMore choices (timeline, map, facet, runway…)

Browser compatibility issues

OFC (Open Flash Chart)Many bars, charts, plots, even scattered plots

Flash required

Page 28: Smwcon spring2011 tutorial applied semantic mediawiki
Page 29: Smwcon spring2011 tutorial applied semantic mediawiki

Sidebar Customization

Basic: MediaWiki:Sidebar

Enhanced: semantic queries, and tree views

Advanced: use variables together with queries

Custom: Using an extension: DynamicSidebar Customize your own sidebar at User:<username>/Sidebar

http://www.mediawiki.org/wiki/Extension:DynamicSidebar

Example: http://wiking.vulcan.com/dev/

Page 30: Smwcon spring2011 tutorial applied semantic mediawiki

Current Sprint in Sidebar

*Current sprint{{#ask: [[Category:Project sprints]][[Sprint start date::<{{CURRENTYEAR}}/{{CURRENTMONTH}}/{{CURRENTDAY}}]][[Sprint end date::>{{CURRENTYEAR}}/{{CURRENTMONTH}}/{{CURRENTDAY}}]]|format=template|template=Sidebar query template|link=none|}}

Page 31: Smwcon spring2011 tutorial applied semantic mediawiki

My Active Sprint Tasks in Sidebar

*My tasks{{#ask: [[Category:Project tasks]][[Project task owner::<q>[[User alias::{{CURRENTUSER}}]]</q>]][[Project story::<q>[[Project sprint::<q>[[Category:Project sprints]][[Sprint start date::<{{CURRENTYEAR}}/{{CURRENTMONTH}}/{{CURRENTDAY}}]][[Sprint end date::>{{CURRENTYEAR}}/{{CURRENTMONTH}}/{{CURRENTDAY}}]]</q>]]</q>]][[Project task status::In progress||Not started]]|format=template|template=Sidebar query template|link=none|}}

Page 32: Smwcon spring2011 tutorial applied semantic mediawiki

More Extension Examples

Twitter Feedhttp://www.mediawikiwidgets.org/Twitter_Search (example)

Flickr Feedhttp://www.mediawikiwidgets.org/Flickr

Amazon Carouselhttps://widgets.amazon.com/Amazon-Carousel-Widget/

Google Analyticshttp://www.mediawiki.org/wiki/Extension:Google_Analytics

Optify Analyticshttp://www.optify.net/

Page 33: Smwcon spring2011 tutorial applied semantic mediawiki

Templates and Forms

MediaWiki template is essential for its structured data handling

Editing, especially Template editing, is not trivial

Semantic Forms extension greatly lowers the bar

Customizing templates and forms can provide very visually appealing pages

Page 34: Smwcon spring2011 tutorial applied semantic mediawiki

Form with a Style

http://www.thethirdturn.com/w/index.php?title=Form:Driver&action=edit

Page 35: Smwcon spring2011 tutorial applied semantic mediawiki

Forms with autocompletion

Basic Auto-Completion on Category Values

Advanced Auto-Completion on Customized Query Results

Page 36: Smwcon spring2011 tutorial applied semantic mediawiki

Story TemplateTo have a field (form link) for users to quickly create tasks that belong to the story (parameter preset)

{{#forminput:Project Task|45||Create a new task|Project Task[story]={{PAGENAME}}&Project Task[owner]=__USERNAME__&Project Task[status]=Not started}}

http://wiking.vulcan.com/dev/index.php/Prepare_for_SMWCon_Spring_2011

Page 37: Smwcon spring2011 tutorial applied semantic mediawiki

Example: Daily Report

We want to achieve “burn-down” chart in our sprint overview

We need:Daily new tasks (created, but not started yet)

Daily in-progress tasks (started by not done yet)

Daily finished tasks (completed)

Task ownership and completion timeline

And similar things for bugs (other analysis)

Page 38: Smwcon spring2011 tutorial applied semantic mediawiki

Quiz #1:

How do you specify Today, Tomorrow in query?

Page 39: Smwcon spring2011 tutorial applied semantic mediawiki

Date Magic and Templates

Magic words: CURRENTYEAR/MONTH/DAY

Some MediaWiki date-related templates to use

DATEDIFF, DATECOMP, …

NEXTDAY, NEXTDAYDATE, …

http://en.wikipedia.org/wiki/Category:Date-computing_templates

http://en.wikipedia.org/wiki/Category:ISO_date_templates

Page 40: Smwcon spring2011 tutorial applied semantic mediawiki

Quiz #2:

How do you do strictly “less than” or “greater than”?

(Before 2010.03)

Page 41: Smwcon spring2011 tutorial applied semantic mediawiki

Strict ComparisonDate query : how to do “In progress” with a finish date “>” today?

Extra markup would reduce usability

Semantic MediaWiki did NOT support it until 2010.11

We patched Semantic MediaWiki Core

Now (as of SMW 1.5.3 + ) we have < and > implemented

Use ≤ and ≥ (on ASCII keyboard 242 and 243)

And a configuration to turn it on

Page 42: Smwcon spring2011 tutorial applied semantic mediawiki

Quiz #3:

What if “Today” changes to “Tomorrow” or later dates in

your query template?{{CURRENTYEAR}}/{{CURRENTMONTH}}/{{CURRENTDAY}}

Page 43: Smwcon spring2011 tutorial applied semantic mediawiki

Freeze the TimeSubclusion is your friend!

Subclusion = Substitute + inclusion

Today's newly started # tasks: [[Report start task count::{{subst:#ask: [[Category:Project tasks]][[Project task start date::{{{date|}}}]]| format=count|}}]]

Page 44: Smwcon spring2011 tutorial applied semantic mediawiki

More Customization

Out there in the Wild Wiki World

Page 45: Smwcon spring2011 tutorial applied semantic mediawiki

Integration

Guidelines and case studies on building wikis

Page 46: Smwcon spring2011 tutorial applied semantic mediawiki

StepsKnow what to build

Customers, customers, customers!

Get your collection of extensions…

Customize your wiki (template, forms)

Handle the data (schema, query, API, …)

Page 47: Smwcon spring2011 tutorial applied semantic mediawiki

Case 1. Proper Wiki

Focus on Skin, Form and Template

Steps:1. Pick a (default) skin

2. Design some forms1. And templates (queries) behind the forms

3. Build starter pages and Go!

Page 48: Smwcon spring2011 tutorial applied semantic mediawiki

Biology Ontology Wiki

People need discuss about the details related to construct a biology ontology

Classes (categories)

Properties

Relations

Textbook analysis

Discussion

Forms necessary to keep content tidy

Page 49: Smwcon spring2011 tutorial applied semantic mediawiki

Ex: Property Form

Page 51: Smwcon spring2011 tutorial applied semantic mediawiki

Case 2: Simple Workflow App

Idea: go from one form to another form

Need form links in the template

May need user rights management

Page 52: Smwcon spring2011 tutorial applied semantic mediawiki

Proposal Review Workflow Example1. User submits a proposal via a form

1. Fill in basic information about the proposal

2. Set a field in the form to be, say, “New”

3. User doesn’t see further information about “Reviewer” or “Owner”, etc.

2. Semantic notification (email and RSS feed) facilitates communication

3. Reviewer finds the form in a canned query1. Reviewer changes the status to, say, “Approved”

2. Reviewer field (say “Reviewed by”) is (automatically) set

3. Then reviewer assigns the proposal to a owner, say, “Alice”

4. The owner (“Alice”) now sees it and can start work on it1. Changes the status to “Active”

2. Adds a start date or maybe an estimated end date too

Page 53: Smwcon spring2011 tutorial applied semantic mediawiki

Ways to Handle Workflow

Add a link to open another formForce edit “review” using another form (e.g. reviewer form)

When saving the new form, the category is changed

Now we have a different category a different default form

Change a value to include or exclude to another template

May need #if (or #switch) statement in template to change (or include/exclude) template values

Use “Page has default form” property (Semantic Forms extension)

Page 54: Smwcon spring2011 tutorial applied semantic mediawiki

Case 3: Wiking Dev Wiki

Our project management wiki

We use it for *all* things it can do:Proposals, ideas, email messages, features, bugs

Agile development: milestones, sprints, stories, tasks

Code/Feature association: SVN mapped to tasks/bugs

Progress analysis: burn-down charts, work calendar

Collaboration, Documentation, Demonstration

Page 55: Smwcon spring2011 tutorial applied semantic mediawiki

Examples of Data I/O

Wiking Development Wiki

An Imported emailhttp://wiking.vulcan.com/dev/index.php/Demo_scenarios

An email imported as a Project Bughttp://wiking.vulcan.com/dev/index.php/Issue_11886_Insert_a_single_property

A task uploaded via Outlook with multiple commits

http://wiking.vulcan.com/dev/index.php/WikiTags_Release_Structure

Page 56: Smwcon spring2011 tutorial applied semantic mediawiki

Microsoft Office Connector

Leverage Microsoft Office applications and technology

Bring SMW info to Office applications on-demand

API for data I/O: add and modify wiki data within Microsoft Office

Utilize semantics to improve relevance

Smart actions for semantic properties

Connections

API

API

SmartJesse Wang | SemTech 2010

Page 57: Smwcon spring2011 tutorial applied semantic mediawiki

Our Agile Project Management (Scrum)

57

Sprint Backlog

Sprint Output

Sprint2-3 week

BurnupBurndownVelocity

Daily ScrumEvery 24 hours

Bac

klog

Mee

ting

mem

o

Etc

...

Code commit

Spr

int o

utp

ut p

ack

ageCreate stories and tasks

Mail upload

Task /

bug

upda

te

Generate daily report

User specified notificiations

Product documentation

Wiking

Jesse Wang | SMWCon Amsterdam 2010

Page 58: Smwcon spring2011 tutorial applied semantic mediawiki

Wiki Data I/OWiking development wiki has two external applications

Subversion integration

Microsoft Office integration

Extensions to support itSemantic Wikitags

Semantic Connector

Page 59: Smwcon spring2011 tutorial applied semantic mediawiki

Data I/O Extensions

MediaWiki API – very basic read/write

Page Object ModelFirst Data I/O extension to allow access some wiki structure data (links, title, basic template field)

SMWWriterBased on POM, support annotations (semantic properties)

Data API extension in SMW+

Semantic WikiTags and Semantic Connector

Wiki Object ModelA powerful and comprehensive object model (Data API)

Read/write at finer object level (sentences, template parameters)

Page 60: Smwcon spring2011 tutorial applied semantic mediawiki

Wiki Object ModelPrevious wiki data API efforts are not good enough to build applications

There are strong needs for access the structured data and unstructured data in the wiki as a data store

From internal and external applications’ point of view

A DOM-like approach is reasonable choiceXpath is a great tool and standard

Granularity offers flexibility and power

People like to operate on known objects rather than parsing and handling wiki texts

APIs provide access to both internal and external apps

Page 61: Smwcon spring2011 tutorial applied semantic mediawiki

Wiki Object Model Objects

Category

Link

Property

Text

Magic word

HTML tag

Sentence

Word*

Image

61

Page

Section

Parameter

Parameter value

Template

Template field

Parser function

List item

Table

Table cell

* Not yet implemented as of April 2011

Page 62: Smwcon spring2011 tutorial applied semantic mediawiki

Demo of WOM Demo at http://wiking.vulcan.com/dev_sandbox/ Demo 1: APIs

The API is part of MediaWiki API, with our additions to allow get and set (read/write) the content of a wiki page

http://wiking.vulcan.com/dev/index.php/Extension:Wiki_Object_Model/Apis

Demo 2: Inline Editor A simple inline editor (AJAX styled) to let user modify

a specific portion of the wiki page Based on

http://wiking.vulcan.com/dev/index.php/Extension:Wiki_Object_Model/Functions

62

Page 63: Smwcon spring2011 tutorial applied semantic mediawiki

4. Final Case Study

Stanford University CS 227 Car WikiDeveloped for Masters level CS class for assignment in “Knowledge Representation Within a Social Context”

Over 40 students created pages populating an ontology, created a personal page documenting their automobile, and compiled site statistics into group pages

Extra credit was offered to the entire class as a group upon initial wiki population assignment

Page 64: Smwcon spring2011 tutorial applied semantic mediawiki

“Dream Car” Wiki Ontology

The ontology was left intentionally incomplete and students were encouraged to update the ontology

Car manufacturer pages

Car make & model pages

Personal “Licensed Car” Page

Custom properties added to ontology and personal pages

Page 65: Smwcon spring2011 tutorial applied semantic mediawiki

Extensions for Car Wiki

Standard SMW extension suite downloaded from SMW+ code repository

Custom Semantic Results Formatter used with Open Flash Charts

Widgets extension included for creating custom JavaScript APIs to other social frameworks

Page 66: Smwcon spring2011 tutorial applied semantic mediawiki

Forms and Templates

Semantic Forms for creating company, car, and personal vehicle

Templates for presenting your car and linking the make & model to Widget templates for social links

Page 67: Smwcon spring2011 tutorial applied semantic mediawiki

Demo of Car WikiOntology

Sample Car Manufacturer : Audi

Sample Car Make & Model : Audi A6/A7

Sample Licensed Cars : William_A6, William_A7

Final Chart of Completed Assignment

Page 68: Smwcon spring2011 tutorial applied semantic mediawiki

A Wiki in a WeekOntology, Code Installation and Sample Page Population Completed within a Day

SMW+ with core extensions

Minimal Updating and Bug Fixing of Components Taken from Other Wiki Projects

Custom widgets and result formatters

Final Population of Wiki Articles Completed Over the Course of a Week Long Assignment

Page 69: Smwcon spring2011 tutorial applied semantic mediawiki

SummaryJumpstart

Deployment of your bundle/suite/package

Code, pseudo-code/meta-data, and data

CustomizeSkins, Styles

Extension choices

Integrate Know the requirements and data

Put everything together and evolve

Page 70: Smwcon spring2011 tutorial applied semantic mediawiki

Thank youQuestions and/or comments?