====== IHM -- recursive semantic hypermedia archive ====== ~~SLIDESHOW~~ \\ \\ Robin Gareus CiTu, Université Paris 8; linuxaudio.org ===== Introduction: The Problem ===== * IHM needs a spiffy media archive :) * There is no appropriate non-commercial solution. * //joomla// or //drupal// could be customized; yet that path would require non-sustainable development effort. ===== Intro.: Motivation / Use-case ===== Why another //content-management system// ? //Content// means "some sort of information", //management// in this context means "doing something with it." Most of the CMS are web-site revisioning systems with emphasis on social networks. We want a system to **contain abstract items** or objects (i.e. image, article, movie, person, location, comments,..) and be able to **define semantic relations** between them. ===== Intro.: Collaborations (1/2) ===== Potential applications, existing projects, collaborations: * IHM - archive about history of man-machine interfaces * TheArtCollider - platform for connected creation (CiTu, Paris8) * MMDB - MyMovieDatabase (GNU project) * Ozalid - upcoming social network and archive of the Bibliothèque nationale de France * zeega.org - interactive documentaries and new forms of storytelling (Meta-Lab, Harvard) ===== Intro.: Collaborations (2/2) ===== * Freesound.org - collection of audio-samples * newscoop/superdesk - newsroom production system (sourcefabric.org) * airtime - radio station system (sourcefabric.org) * mmTeX - fan-fiction layout and book publishing engine. ===== Intro.: Goals / Outline ===== * Complete language-set to define relations * Modular system (extended by plugins) * Publish/subscribe architecture * Social network integration * Pluggable front-ends: * n-dimensional navigation, timeline * interoperability with existing authoring tools, apps and data-sets. * integrated XHTML engine ===== Implementation: Data Model ===== The datamodel is a language based on triplets: "Subject" + "predicate" + "Object" Where //subject// and //objects// are an noun for an item/thing/frame/object and //predicate// is a verb. Both, //items// and //predicates// are modular types and each of them may optionally have have dynamic //attributes or adverbs//. ===== Impl.: Data Model Example ===== "Mona Lisa" + was presented [from date to date] at + "the Louvre [website]". "Mona Lisa" + was authored [on date] by + "L. da Vinci.". Legend: * "subject, object" * + predicate + * [attribute] ===== Impl.: References, Edges ===== * Each item in IHM has a canonical resource-URI (aka. UUID) - which can be used to **universally reference** the content (similar to a permalink). * Edges are **directional** (parent/child) links between two resource-URIs using a **predicate**. * A matrix defines the potential relations. ===== Impl.: Data Types and Relations ===== {{ :wiki:ihm.png?400}} [[http://theartcollider.org/ihm-test/?viz=vis_form_admin_typematrix]] ===== Impl.: Technical Specs ===== * PHP/JavaScript/XHTML5, REST-API * Model/View/Controller * OAuth/OpenID for access control and authentication. * Atom/XML is the main data-format for content. * uses existing RDF templates (SOAP, DOAP, FOAF, etc) * modular system: the layout/architecture is defined in the core but the actual visualization, rendering and [interaction + graphic] design is handled by plugins. ===== Impl.: Data Aggregation ===== * Each object may be aggregated or synchronized with an external resource URI. * Items may reference read-only sources (media archive on disk, 3rd party information) - synchronisation. * Changes to the data-set are published (push) and can be subscribed to. Asynchronous updates. ===== Prototype: Demo ===== {{ :robin:ihm2.png?500 }} * Site: http://theartcollider.org/ihm-test/ * API: http://theartcollider.org/ihm-test/api_rest.php ===== Prototype: What's missing ===== * Proper front-end (web and interaction design[er]) * Item visualization * Project specific customizations * Backend-parts: * Authentication & access-control * Pub/Sub API * Query filtering on edges. * ... * Community management ===== Prototype: Outlook, Roadmap ===== * Publicly usable prototype: after x-mas * Freeze APIs: spring 2012