NetworkedPlanet
TMCore EPiServer Module
Technical Overview
Agenda
• Problem Statement• What Are Topic Maps?• Topic Maps & EPiServer
PROBLEM STATEMENT
Problem Statement• Navigation Issues
– Where am I?– Where can I go?
• Absent and Broken Links– Taking old pages down– Putting new pages up
• Content Change Rippling– The effect of changing content
• Seamless Editing Environments– Getting classification done
Navigation• Users have a mental model of the information architecture.
– The model will differ from user to user.
• Need to avoid strict hierarchy navigation
• Provide links to related content via useful semantics
• Group related content
• Simplify the authoring process– No more hand crafting thousands of manual links
• Improving link management– No more broken links– Relevant content automatically added to pages
Content Integration
• Topic Maps act as a knowledge hub that integrate heterogeneous content to present a unified view.
• Address specific use-cases:– How do I show content from two EPiServer instances?– How do I provide links to content from one server to that
in another?
• How can I integrate stock quotes, or content from the archive system in to my site?
Augmented Search
• Semantic search by topic and not by full text
• Group search results by their topic classification
• Provide Google Suggest-like topic search
• Perform facet classification and search
WHAT ARE TOPIC MAPS?
From Tags…
La Dolce VitaFedericoFellini
Rome
Carmen
Piccini The Magic of Fellini
…to Topics
Directed /Directed By
Subject Of/Is About
Directed /Directed By
Setting Of/Set In
Is In /Contains
Born In /Birthplace Of
La Dolce VitaFederico
Fellini
Rome
Italy
The Magic of FelliniCarmen Piccini
Associations Between Topics
• Associations between topics have rich semantics.
Skilled Person SkillPerson Possessed Skill
Person has Skill
Roles
Association Type
Role Playing TypeRole Defining Type
Topic Map Schemas
• Topic Types
• Inheritance
Document
Release Notes
EPiServer 5 Release Notes
Technical Article
Topic Map Schemas
• Association Constraints are inherited
Skilled Person SkillPerson Possessed Skill
Person has Skill
Technical Skill
TOPIC MAPS AND EPISERVER
For every page in EPiServer there can exist a topic…
Page: Graham Moore Topic: Graham Moore
Pages & Topics
Topic Type: PersonPage Type : Person
Associating Pages• Topics are connected together to form a graph of interrelated concepts
• All connections are two way and typed
Graham MooreC#
Has skill Has skill
Java
Graham MooreC#
Has skill Has skill
Scoping Associations
• Associations are scoped so that associations are only visible after publication
Java
Editor View User View
C#Java
C#
UNPUBLISHED
CLASSIFYING EPISERVER CONTENT
Editor Support
• There are many ways to achieve topic map integration but those that are successful attend to the process and user needs as much as the technology.
• As well as the controls themselves there is the opportunity to build additional editorial controls that use topic maps as a way for editors to better organise the content they work with.
Classification of Content• Seamless integration with
EPiServer Edit Mode
• Dynamically generated UI from topic map schema.
• AJAX driven responsive and performant.
• Intuitive and clear.
Classification of Content• Schema-driven editor provides
the editor only with valid choices.
• Information about linked, or potentially linked topics on screen.
BUILDING SITES WITH TOPICS
Development Aids - Overview• Simple to use API
– Usable from all CLR languages– Web Services based– Many examples (demo site is open source)
• ASP.NET Compatibility– Data bound controls (Repeater, DataList and DataSet)– Faceted Search & Tag Cloud Web Parts
• Provides hooks for pre- and post- processing of editorial options.– Apply extra filters or bespoke queries.
Development Aids – Documentation
Development Aids – Simple API
• Set up a simple ASP.NET Repeater control:<asp:repeater runat="server" id="OrgUnitLedRepeater"> <separatortemplate>, </separatortemplate> <itemtemplate> <a href='<%# DataBinder.Eval(Container.DataItem, "pageLinkURL") %>'> <%# DataBinder.Eval(Container.DataItem, "pageName") %></a> </itemtemplate></asp:repeater>
BindOneHopToRepeater(this.OrgUnitLedRepeater,"http://example.org/association/personLeadsUnit","http://example.org/role/leader");
• Use the API to bind all the related topics to the control:– According to association type and role played