Smwcon spring2011 tutorial applied semantic mediawiki
Upcoming SlideShare
Loading in...5

Smwcon spring2011 tutorial applied semantic mediawiki



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

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



Total Views
Slideshare-icon Views on SlideShare
Embed Views



4 Embeds 18 11 4 2 1



Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment
  • ----- Meeting Notes (3/24/11 15:29) -----Vulcan is the MothershipProviding funds and supportPaul Allen successful
  • Counter information overload with visualizations
  • WikiTags is here to bridge semantic wikis with more potential users, such as users of Microsoft Word, Outlook and Excel, with Microsoft SmartTag technology.

Smwcon spring2011 tutorial applied semantic mediawiki Smwcon spring2011 tutorial applied semantic mediawiki Presentation Transcript

  • Applied Semantic MediaWiki
    SMWCon Spring 2011 Tutorial #4
  • Who Are We
    Jesse Jiaxin Wang
    Sr. Software Architect, Vulcan Inc.
    Ning Hu
    Sr. Software Developer, TeamMersion LLC
    Wil Smith
    Software Engineer, Vulcan Inc.
  • About Vulcan
    Vulcan 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.
  • Agenda
  • Jumpstart
  • Using a Bundle
    Semantic Bundle
    Features: (Pros and Cons)
    A set of author-selected extensions
    A fixed set of extensions, few customization options
    Simplified download and configuration process
    Still need manual configuration
    Usually up-to-date and work well together
    Community tested and supported
  • Installation Package
    SMW+ Package
    A set of (fixed) company selected extensions
    Simplifies installation and configuration
    Windows installer and VM images are great
    And they just became free!
    You may still be curious about what it does…
    Professionally documented and tested
    Usually weeks after major release of latest SMW
  • Real-world Deployment
    When you want a set of custom extensions, you want
  • Deployment Practices
    Your own codebase, with checkpoints
    SVN or Git to get the base, and then
    Customize the wiki
    Script or Manual or Mixed
    A third-party deployment framework and repository
  • Build System
    You 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)
  • Wish List
    A 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)
  • Customize
  • What to Customize
    Schema and Data
    Templates and forms
    Anything else you can code… 
  • Skins
    How 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 files
    There 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 /skins
    Copy image and CSS files to your skin folder
    Use your own skin
    In LocalSettings.php set
    $wgDefaultSkin = 'wiking_skin'
  • Seahawk Video Skin
  • Skin Customization Example
    Vulcan 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
    <?phpforeach ($this->data['sidebar'] as $bar => $cont) { ?>
    <a href="#"><h5><?php $out = wfMsg( $bar );></h5></a>
    <?phpforeach($cont as $key => $val) { ?>
    <li id="<?php echo $val['id'] ?>" >
    <a href="<?php echo $val['href'] ?>"><?php echo $val['text'] ?></a>
    <?php } ?>
    <?php } ?>
  • Personalized Skin
    Skin supports customization via __USERNAME__
    User can have personalized styles within a skin
    Tip: A way to turn off Wikipedia banner ad:
  • 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” Ontology
    Professionally 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
  • N-ary Relations
    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)
  • Extensions
    Where to find extensions
    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…
  • Get the Extensions!
    Some essential ones!
    Semantic MediaWiki extensions are quite a few:
    Find what you want
    Not exactly? Then patch it!
    Nothing close? Then build it!
    Or find people to build it 
  • Our Experiences
    We built several wikis (2008-2011)
    The most useful extension (SF) often needed patches
    Fixed 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 Core
    Aggregation (average, max, sum, etc.)
    e.g. > and < comparison
  • 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)
  • A Short Story
    Proposal 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?
    MediaWiki built-in groups?
  • How to Select | Test
    Inclusion / transclusion
    Aton/RSS feed, Watch page
    Listing and Searching
    RecentChanges, AllPages
    Diff and Revision URL
    Action links (raw, render)
    API (???)
    3rd party APIs
    Author backdoor?
    Files and Images?
    Other extensions?
  • Visualization: Our Path
    2008: SRF used to only have few options
    2009: Exhibit seemed cool
    Ported webit
    Fixed some bugs and enhanced features
    Runway, TimePlot, multiple rows in Map view etc.
    2010: Open Flash Chart
    More bars, pies, lines, scatter plot…
    Richer information display
  • 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…
    More choices (timeline, map, facet, runway…)
    Browser compatibility issues
    OFC (Open Flash Chart)
    Many bars, charts, plots, even scattered plots
    Flash required
  • 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
  • Current Sprint in Sidebar
    *Current sprint
    {{#ask: [[Category:Project sprints]]
    [[Sprint start date::<{{CURRENTYEAR}}/{{CURRENTMONTH}}/{{CURRENTDAY}}]]
    [[Sprint end date::>{{CURRENTYEAR}}/{{CURRENTMONTH}}/{{CURRENTDAY}}]]
    |template=Sidebar query template
  • 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>]]
    [[Project task status::In progress||Not started]]
    |template=Sidebar query template
  • More Extension Examples
    Twitter Feed (example)
    Flickr Feed
    Amazon Carousel
    Google Analytics
    Optify Analytics
  • 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
  • Form with a Style
  • Forms with autocompletion
    Advanced Auto-Completion on Customized Query Results
    Basic Auto-Completion on Category Values
  • Story Template
    To have a field (form link) for users to quickly create tasks that belong to the story (parameter preset)
    {{#forminput:Project Task
    |Create a new task
    |Project Task[story]={{PAGENAME}}&Project Task[owner]=__USERNAME__&Project Task[status]=Not started
  • 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)
  • Quiz #1:
    How do you specify Today, Tomorrow in query?
  • Date Magic and Templates
    Some MediaWiki date-related templates to use
  • Quiz #2:
    How do you do strictly “less than” or “greater than”?
    (Before 2010.03)
  • Strict Comparison
    Date 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
  • Quiz #3:
    What if “Today” changes to “Tomorrow” or later dates in your query template?
  • Freeze the Time
    Subclusion 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
  • More Customization
    Out there in the
    Wild Wiki World
  • Integration
  • Steps
    Know what to build
    Customers, customers, customers!
    Get your collection of extensions…
    Customize your wiki (template, forms)
    Handle the data (schema, query, API, …)
  • Case 1. Proper Wiki
    Focus on Skin, Form and Template
    Pick a (default) skin
    Design some forms
    And templates (queries) behind the forms
    Build starter pages and Go!
  • Biology Ontology Wiki
    People need discuss about the details related to construct a biology ontology
    Classes (categories)
    Textbook analysis
    Forms necessary to keep content tidy
  • Ex: Property Form
  • Forms on Namespace
    “Easy-peazy, lemons squeezy” ?
  • Case 2: Simple Workflow App
    Idea: go from one form to another form
    Need form links in the template
    May need user rights management
  • Proposal Review Workflow Example
    User submits a proposal via a form
    Fill in basic information about the proposal
    Set a field in the form to be, say, “New”
    User doesn’t see further information about “Reviewer” or “Owner”, etc.
    Semantic notification (email and RSS feed) facilitates communication
    Reviewer finds the form in a canned query
    Reviewer changes the status to, say, “Approved”
    Reviewer field (say “Reviewed by”) is (automatically) set
    Then reviewer assigns the proposal to a owner, say, “Alice”
    The owner (“Alice”) now sees it and can start work on it
    Changes the status to “Active”
    Adds a start date or maybe an estimated end date too
  • Ways to Handle Workflow
    Add a link to open another form
    Force 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)
  • Case 3: WikingDev 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
  • Examples of Data I/O
    Wiking Development Wiki
    An Imported email
    An email imported as a Project Bug
    A task uploaded via Outlook with multiple commits
  • 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
    Jesse Wang | SemTech 2010
  • Our Agile Project Management (Scrum)
    Jesse Wang | SMWCon Amsterdam 2010
  • Wiki Data I/O
    Wiking development wiki has two external applications
    Subversion integration
    Microsoft Office integration
    Extensions to support it
    Semantic Wikitags
    Semantic Connector
  • Data I/O Extensions
    MediaWiki API – very basic read/write
    Page Object Model
    First Data I/O extension to allow access some wiki structure data (links, title, basic template field)
    Based on POM, support annotations (semantic properties)
    Data API extension in SMW+
    Semantic WikiTags and Semantic Connector
    Wiki Object Model
    A powerful and comprehensive object model (Data API)
    Read/write at finer object level (sentences, template parameters)
  • Wiki Object Model
    Previous 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 choice
    Xpath 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
  • Wiki Object Model Objects
    Magic word
    HTML tag
    Parameter value
    Template field
    Parser function
    List item
    Table cell
    * Not yet implemented as of April 2011
  • Demo of WOM
    • Demo at
    • 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
    • Demo 2: Inline Editor
    • A simple inline editor (AJAX styled) to let user modify a specific portion of the wiki page
    • Based on
  • 4. Final Case Study
    Stanford University CS 227 Car Wiki
    Developed 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
  • “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
  • 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
  • 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
  • Demo of Car Wiki
    Sample Car Manufacturer : Audi
    Sample Car Make & Model : Audi A6/A7
    Sample Licensed Cars : William_A6, William_A7
    Final Chart of Completed Assignment
  • A Wiki in a Week
    Ontology, 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
  • Summary
    Deployment of your bundle/suite/package
    Code, pseudo-code/meta-data, and data
    Skins, Styles
    Extension choices
    Know the requirements and data
    Put everything together and evolve
  • Thank you
    Questions and/or comments?