2007 03 12 Swecr 2

1,126 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,126
On SlideShare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • 2007 03 12 Swecr 2

    1. 1. A content model/API which unifies Wikis, RDF, binaries, CDS, iMapping, WIF To be used in NEPOMUK, WAVES, WIF and beyond Max Völkel (FZI) with a lot of help from Mikhail Kotelnikov (Cognium Systems), Tim Romberg (FZI), and Heiko Haller (FZI) 8.3.2007
    2. 2. History <ul><li>12.03.07: Version 2 </li></ul><ul><ul><li>Feedback from Tim Romberg </li></ul></ul><ul><ul><li>Refined Content API </li></ul></ul><ul><li>10.03.07: Version 1 </li></ul>
    3. 3. Inputs to this document <ul><li>Current Conceptual Data Structures (CDS) API </li></ul><ul><ul><li>http://cds.xam.de </li></ul></ul><ul><li>NEPOMUK Common Semantic Wiki API (CSWA) </li></ul><ul><ul><li>http://www.aifb.uni-karlsruhe.de/Publikationen/showPublikation?publ_id=1449 page 45 </li></ul></ul><ul><li>NEPOMUK WMO (Wiki Metadata Ontology) </li></ul><ul><ul><li>http://www.aifb.uni-karlsruhe.de/Publikationen/showPublikation?publ_id=1449 page 42 </li></ul></ul><ul><li>WIF API </li></ul><ul><ul><li>see http://xam.de/2006/2006-12-19-SA-Andreas-Kurz.pdf (German) </li></ul></ul><ul><li>WAVES content API - unfinished </li></ul><ul><li>Many discussions! Thanks! </li></ul>
    4. 4. Part I: Wikis
    5. 5. What is a wiki? <ul><li>Collection of pages with one root page </li></ul><ul><li>Each page has a name </li></ul><ul><li>Content of a page has many versions </li></ul><ul><li>Each version has an author, change date </li></ul><ul><li>Content contains </li></ul><ul><ul><li>text, </li></ul></ul><ul><ul><li>structure (headlines, lists, tables), </li></ul></ul><ul><ul><li>links to external resources (images, URLs), </li></ul></ul><ul><ul><li>links to other wiki pages </li></ul></ul><ul><li>RecentChanges </li></ul>
    6. 6. What is a semantic wiki? <ul><li>Collection of pages with one root page </li></ul><ul><li>Each page has a name and URI </li></ul><ul><li>Content of a page has many versions </li></ul><ul><li>Each version has an author, change date </li></ul><ul><li>Content contains </li></ul><ul><ul><li>text, </li></ul></ul><ul><ul><li>structure (headlines, lists, tables), </li></ul></ul><ul><ul><li>(semantic?) links to external resources (images, URLs), </li></ul></ul><ul><ul><li>(semantic?) links to other wiki pages, </li></ul></ul><ul><ul><li>semantic statements about the current page, </li></ul></ul><ul><ul><li>semantic statements about anything </li></ul></ul><ul><li>RecentChanges </li></ul>
    7. 7. Integration of legacy wikis <ul><li>Import / Export a single page: </li></ul><ul><li>Import / Export a whole wiki (including versions?): </li></ul>Legacy Wiki JWiki XHTML Wiki Syntax WIF+RDF WAF.zip HTTP  documented in http://xam.de/2006/2006-12-19-SA-Andreas-Kurz.pdf No longer a core part of the content API. But a pragmatic tool to ease migration of wiki content.
    8. 8. JWiki – An API to access (semantic) wikis (fomerly known as the WIF API) <ul><li>Repository functions: </li></ul><ul><li>Page[] getAllPages, </li></ul><ul><li>Page getRootPage, </li></ul><ul><li>Page[] getChangedPagesSince(long datetime) </li></ul><ul><li>Page[] search( String fulltextQuery ) </li></ul><ul><li>Addressing : </li></ul><ul><li>URL getURL( String pagename ) </li></ul><ul><li>Page functions </li></ul><ul><li>Content : </li></ul><ul><li>Reader getWIF(), putWIF(Reader r) </li></ul><ul><li>Reader getWikiSyntax(), putWikiSyntax(Reader r) </li></ul><ul><li>Reader getHTML() </li></ul><ul><li>Metadata : </li></ul><ul><li>String getAuthor, </li></ul><ul><li>long getLastChanged, </li></ul><ul><li>URI getPreviousVersion </li></ul><ul><li>Semantic : </li></ul><ul><li>Reader getRDF(), putRDF( Reader r ) </li></ul><ul><li>Collaboration </li></ul><ul><li>beginEdit(), cancelEdit() </li></ul>Note: This API is not the final content API. This is just a simple web-wiki-wrapping API. The content API can be inspired by this.
    9. 9. WIF in a nutshell see also http://wiki.ontoworld.org/wiki/WIF <ul><li>WIF is a subset of XHTML … (makes it easier to generate WikiSyntax from it) </li></ul><ul><ul><li>structure: <html>, <head>, <title>, <body> </li></ul></ul><ul><ul><li>headlines: <h1>, <h2>, <h3>, <h4>, <h5>, <h6> </li></ul></ul><ul><ul><li>block elements: <p>, <pre>, <hr> </li></ul></ul><ul><ul><li>lists: <dl>, <dd>, <dt>, <ol>, <ul>, <li> </li></ul></ul><ul><ul><li>tables: <table>, <tr>, <th>, <td> </li></ul></ul><ul><ul><li>inline elements: <i>, <b>, <sub>, <sup>, <tt> </li></ul></ul><ul><ul><li>images: <img> with attribute ’src’, </li></ul></ul><ul><ul><li>links: <a> with attribute ’href’ </li></ul></ul><ul><ul><li>Other HTML elements may be ignored by WIF-processors. </li></ul></ul><ul><li>… which can be augmented with XML IDs to annotate XML elements </li></ul>WIF
    10. 10. WIF example <ul><li><?xml version=&quot;1.0&quot; encoding=“UTF8&quot;?> </li></ul><ul><li><!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;> </li></ul><ul><li><html xmlns=&quot;http://www.w3.org/1999/xhtml“ xmlns:ex=&quot;http://example.com/ontology/2007# ”> </li></ul><ul><li><head> <title>Example WIF</title> </head> </li></ul><ul><li><body> </li></ul><ul><li><h1>Heading h1</h1> </li></ul><ul><li><p>internal link: <a class=“internal” href=&quot;Sandbox&quot;>Sandbox</a> </li></ul><ul><li> internal link: <a class=“internal” href=&quot;Sandbox&quot;>See here</a>> </li></ul><ul><li> external link: <a class=“internal” href=&quot;http://wikipedia.com&quot;>Wikipedia</a> </li></ul><ul><li> <img src=&quot;/images/b/b6/Uka.png&quot; alt=&quot;logo&quot;/> </li></ul><ul><li>The Elephant is gray and lives in <a span ID=“ex;livesIn” >Africa</a>. </li></ul><ul><li></p> </li></ul><ul><li></body> </li></ul><ul><li></html> </li></ul>Not required Not required WIF
    11. 11. Part II: Beyond Wikis
    12. 12. Generalised Requirements <ul><li>Varying content granularity </li></ul><ul><ul><li>From a single word (such as a concept or wikiname) to a document (such as a wiki page content) </li></ul></ul><ul><ul><li>Should be able to represent semantic concept-maps (iMapping) </li></ul></ul><ul><li>Annotation of everything </li></ul><ul><ul><li>Even of parts of the content </li></ul></ul><ul><li>Semantic statements about everything </li></ul><ul><ul><li>Concepts, resources, binaries, statements, … </li></ul></ul><ul><li>Versioning of everything (binaries, content, model) </li></ul><ul><ul><li>Resources can be versioned individually, RDF is best versioned on the model </li></ul></ul><ul><li>Fulltextsearch </li></ul><ul><li>Autocomplete support </li></ul><ul><ul><li>For links and plain text </li></ul></ul><ul><li>Client-Server </li></ul><ul><ul><li>To enable real-time collaboration, just like in a wiki </li></ul></ul><ul><li>Synchronisation </li></ul><ul><ul><li>Mirror a content store constantly </li></ul></ul><ul><ul><li>Commit local repository to a shared repository – and vice versa </li></ul></ul><ul><li>Import/Export </li></ul><ul><ul><li>From other repositories, from RDF, from web sites, from applications </li></ul></ul><ul><li>Compatible with semantic web and web architecture </li></ul><ul><li>Implementable  </li></ul>
    13. 13. Identified orthogonal requirements <ul><li>Representation on two layers </li></ul><ul><ul><li>Content Resources: map URIs to content (strings or binaries), might be local or remote </li></ul></ul><ul><ul><ul><li> need for binary store </li></ul></ul></ul><ul><ul><li>Semantic Metadata (statements about URIs), locally managed  RDF store </li></ul></ul><ul><ul><li>Queries for named items (such as Wikinames) needed for auto-completion support </li></ul></ul><ul><li>Versioning of everything (binaries, content, model) </li></ul><ul><ul><li>Verisoning on content – on a per-resource basis </li></ul></ul><ul><ul><li>Versioning of semantic model – on a model-basis </li></ul></ul><ul><li>Fulltext search + Autocompletion </li></ul><ul><ul><li>Needs an index of all content resources </li></ul></ul><ul><ul><li>Queries to lexiccon are needed for fulltext-auto-completion </li></ul></ul><ul><li>Web API </li></ul><ul><ul><li>RESTful API </li></ul></ul><ul><li>Integration </li></ul><ul><ul><li>Clear export format </li></ul></ul><ul><ul><li>Support for synhcornisation between two repositories needed </li></ul></ul><ul><li>Implementable  </li></ul>
    14. 14. Building Blocks - Who calls whom? To simplify: We can use RDF both as Triple Model and as String Store… Binary Store URI  stream + mimetype Versioning per resource Triple Model Metadata: (URI, URI, URI) Versioning per model Keyword Index URI  fulltext index Content Server String Store URI  String (can contain XHTML) Versioning per resources
    15. 15. Building Blocks Binary Store URI  stream + mimetype Versioning per resource String[] index() Client <ul><li>RDF Model (triples & strings) </li></ul><ul><li>Metadata layers </li></ul><ul><li>Content: (:x, c:hasContent, „…String or WIF…“) </li></ul><ul><li>Binding: (docURL#ID, c:hasMappedSubject :elephant) </li></ul><ul><li>Statements: (:elephant :livesIn :africa) </li></ul><ul><li>App.Metadata: (:x c:hasAuthor „Heiko Haller“) </li></ul><ul><li>Plugin data (:x, imap:postionX „187“^^xsd:int) </li></ul><ul><li>Versioning per model </li></ul>Keyword Index URI  fulltext index Content Server GET/POST resources RESTful HTTP Add/remove (URI +text) Add/remove( URI + text ) URI +type SPARQL qeuries, GET/PUT RDF files URI[] search( query ) (URI+String)[] complete(…) Access Rights? Authentication?
    16. 16. A closer look on the metadata layers <ul><li>Content – gives all content snippets a URI </li></ul><ul><ul><li>:x, c:hasContent, „…String or WIF…“ </li></ul></ul><ul><li>Binding – annotates XHTML elements </li></ul><ul><ul><li>(docURL#ID, c:hasMappedSubject :elephant) </li></ul></ul><ul><li>Statements – pure semantic RDF data </li></ul><ul><ul><li>(:elephant :livesIn :africa) </li></ul></ul><ul><li>Application Metadata – needed for versioning etc.. </li></ul><ul><ul><li>(:x c:hasAuthor „Heiko Haller“) </li></ul></ul><ul><li>Plugin data – allows plug-ins to store their metadata about the content, too. May use any RDF. </li></ul><ul><ul><li>(:x, imap:postionX „187“^^xsd:int) </li></ul></ul><ul><li>Metadata about binaries – just an index </li></ul>
    17. 17. Idea: give each content literal a URI - makes versioning and annotation easier <ul><li>Classic RDF for any data: </li></ul><ul><li><x> foaf:firstName „Max“ foaf:lastName „Völkel“ foaf:phone „123“ foaf:phone „456“ </li></ul><ul><li>Problem: One cannot annotate the literals </li></ul><ul><li>Idea: Separation of concerns, separate linking from content storing </li></ul><ul><li>Normalised RDF for content representation </li></ul><ul><li>Linking – in RDF </li></ul><ul><li><x> foaf:firstName <1> foaf:lastName <2> foaf:phone <3> foaf:phone<4> . </li></ul><ul><li>Content – could be stored elsewhere </li></ul><ul><li><1> rdf:value „Max“ <2> rdf:value „Völkel“ <3> rdf:value „123“ <4> rdf:value „456“ </li></ul>
    18. 18. Linking of content snippets is at application layer <ul><li>For wikis: :x a wiki:Name :x wiki:hasPageContent :y :y a wiki:Content </li></ul><ul><ul><li>Constraints: </li></ul></ul><ul><ul><ul><li>A wiki:Name can have zero or one wiki:Content </li></ul></ul></ul><ul><ul><ul><li>Links only between wiki:Name </li></ul></ul></ul><ul><ul><li>Versioning on WikiPageContent nodes </li></ul></ul><ul><li>For iMapping/CDS: :x cds:hasDetail :z . :x cds:hasBefore :u. </li></ul><ul><ul><li>Constraints: </li></ul></ul><ul><ul><ul><li>All relations have an inverse </li></ul></ul></ul><ul><li>… </li></ul>
    19. 19. XHTML and RDF <ul><li>Storing a wiki page in RDF </li></ul><ul><li>:x a c:NamedItem . :x c:hasContent „Elephant“ . :x c:hasDetail :y . :y c:hasContent „<html><head>…</head><body>… … This grey animal lives in <span id=„123“>Africa</span>… …</body></html>“ . </li></ul><ul><li>Statements – pure semantic RDF data </li></ul><ul><li>:x :livesIn :africa . :africa :hasPart :SouthAfrica . </li></ul>String-content could also be in a separate store, but it‘s convenient to implement first like this. Named Items can be treated as concepts – even if their name is versioned
    20. 20. XHTML and RDF <ul><li>:x :livesIn :africa . </li></ul><ul><li>:africa :hasPart :SouthAfrica . </li></ul><html> <head>…</head> <body>… … This grey animal lives in <span id=„123“>Africa</span>… … </body> </html> :y c:hasContent Elephant :x c:hasContent Implicitly defines: :y#123 c:hasContent . :y c:contains :y#123 . Africa Statements Strings ? Mapping URI = base URI + ‚#‘ + XML ID These triples can be copied to RDF, to enable queries for them
    21. 21. B: Binding (or Mapping) - links XHTML elements to RDF URIs <ul><li>Use cases: </li></ul><ul><ul><li>Retain which semantic statements are derrived from which DOM nodes – so we can update the model when the DOM node is deleted </li></ul></ul><ul><ul><li>Update rules / embedded queries – so we can present up-to-date data in the document </li></ul></ul><ul><ul><li> As DOM nodes can have an ID, you can annotate everything you want </li></ul></ul><ul><li>Example 1: </li></ul><ul><ul><li>Record that (:x :livesIn :Africa) was derrived from element #123 in the content of :y : </li></ul></ul><ul><ul><li>:y#123 b:hasMappedSubject :x . :y#123 b:hasMappedPredicate :livesIn . :y#123 b:hasMappedObject :africa . </li></ul></ul><ul><li>Example 2: </li></ul><ul><ul><li>Update the value of #123 from the triple (:x, :livesIn, *) </li></ul></ul><ul><ul><li>:y#123 b:hasQuerySubject :x :y#123 b:hasQueryPredicate :livesIn </li></ul></ul>
    22. 22. Data Model Layer Cake Upper layers build on lower layers <ul><li>Ontologies </li></ul><ul><li>Basic data model (like StoRDF  ) : - virtually all data is in RDF </li></ul><ul><ul><li>Content: URI  Content + mimetype </li></ul></ul><ul><ul><ul><li>String </li></ul></ul></ul><ul><ul><ul><ul><li>With XHTML markup </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>XHTML markup with ID attributes defined </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><li>Just a plain String </li></ul></ul></ul></ul><ul><ul><ul><li>Binary </li></ul></ul></ul><ul><ul><li>Model: (URI,URI,URI) </li></ul></ul><ul><li>Index: </li></ul><ul><ul><li>RDF indexes semantic statements hidden in content strings </li></ul></ul><ul><ul><li>Keyword index indexes all strings + all string hidden in binaries </li></ul></ul><ul><li>Persistence: RDF for triples and strings + a binary store </li></ul>Implemention Ideas
    23. 23. Ontology Layer Cake <ul><li>iMapping Ontology „imp:“ </li></ul><ul><ul><li>Imp:hasPosX, imp:hasPosY, imp:isExpanded, … </li></ul></ul><ul><li>CDS Ontology „cds:“ </li></ul><ul><ul><li>Cds:hasBefore, cds:hasAfter, cds:hasDetail, cds:hasContext, cds:hasAnnotation, cds:hasType, cds:hasTag, cds:hasLinktarget, cds:hasLinkSource </li></ul></ul><ul><ul><li>Constraint: Relations must have an inverse </li></ul></ul><ul><li>Wiki Ontology „wiki:“ </li></ul><ul><ul><li>Wiki:hasPageContent – assings a named snippet to an unnamed snippet. Together, they are a wiki page. </li></ul></ul><ul><li>Content Management Ontology „c:“ </li></ul><ul><ul><li>Name snippets vs. Unnamed snippets </li></ul></ul><ul><ul><ul><li>c:NamedItem, c:Item </li></ul></ul></ul><ul><ul><li>Snippets have an author, versions, changedate </li></ul></ul><ul><ul><ul><li>C:hasAuthor, c:hasPrevioisVersion, c:hasChangeDate, … </li></ul></ul></ul><ul><ul><li>Binary resource are annotated with </li></ul></ul><ul><ul><ul><li>C:size, c:mimetype </li></ul></ul></ul><ul><ul><li>Editing status </li></ul></ul><ul><ul><ul><li>C:currentlyEditedBy, c:exists, … </li></ul></ul></ul>
    24. 24. Part III: Getting technical
    25. 25. Multiuser API can be used locally or remote binaries WIF RDF Server Content web server Client Content API Content API User interface <ul><li>Start edit <x> </li></ul><ul><li>Fetch content (WIF or binary) of <x> </li></ul><ul><li>Fetch RDF of <x> </li></ul><ul><li>User editing… </li></ul><ul><ul><li>Fetch fresh metadata </li></ul></ul><ul><ul><li>Update current content </li></ul></ul><ul><li>Commit new content + new RDF </li></ul>Content Server Impl HTTP Content web client HTTP Web
    26. 26. Content and Naming <ul><li>Requirements </li></ul><ul><li>Everything must be addressable </li></ul><ul><ul><li>Can be annotated  expressivity </li></ul></ul><ul><ul><li>Easier versioning </li></ul></ul><ul><ul><li>Easier data exchange </li></ul></ul><ul><li>Addressing for machines: </li></ul><ul><ul><li>Unique IDs needed </li></ul></ul><ul><ul><li>Must be 100% unique </li></ul></ul><ul><ul><li>Used for semantic queries </li></ul></ul><ul><li>Addressing for humans: </li></ul><ul><ul><li>Memorable names needed </li></ul></ul><ul><ul><li>Some ambiguity in naming has to be tolerated </li></ul></ul><ul><ul><li>Used for linking items </li></ul></ul><ul><ul><li>Needs auto-completion support </li></ul></ul><ul><li>Solution: We distinguish two kinds of items, both having a URI: </li></ul><ul><li>NamedItem </li></ul><ul><ul><li>The content of a NamedItem has naming characteristics, i.e. when linking to somewhere, one links to a name. A NamedItem also represents all kinds of concepts. The content of a named item should not contain markup and may not be binary content. </li></ul></ul><ul><li>UnnamedItem </li></ul><ul><ul><li>represents plain content. </li></ul></ul><ul><li>Semantic links </li></ul><ul><ul><li>state the relations between NamedItems and UnnamedItems. </li></ul></ul>
    27. 27. What is a semantic content repository? <ul><li>A repository contains a collection of items … </li></ul><ul><ul><li>One root item </li></ul></ul><ul><ul><li>Each item has content and a URI </li></ul></ul><ul><ul><li>Content can be text, text with mark-up, or any other mime type </li></ul></ul><ul><li>… and semantic links between items </li></ul><ul><li>Versioning on two layers </li></ul><ul><ul><li>Each items content is versioned (for all kinds of resources) </li></ul></ul><ul><ul><li>The semantic model is versioned as a whole </li></ul></ul><ul><ul><li>On both layers: each version has an author & change date </li></ul></ul><ul><li>Locking on a per-item basis </li></ul><ul><li>Recent Changes </li></ul><ul><li>Queries on semantic model and queries on item content </li></ul>
    28. 28. Core concepts <ul><li>Repository </li></ul><ul><li>Model – of semantic statements </li></ul><ul><li>URI </li></ul><ul><li>Content </li></ul><ul><li>Item </li></ul><ul><ul><li>NamedItem </li></ul></ul><ul><ul><li>UnnamedItem </li></ul></ul><ul><li>Adressable Triple </li></ul><ul><li>Mime-type </li></ul><ul><li>User </li></ul><ul><li>Version </li></ul><ul><li>Change date </li></ul>
    29. 29. Data Model Repository Mime-type Addressable Triple Item Content Any binary or character stream URI User ItemVersion 1 root item URI URI URI URI 1:1 1:* URI ModelVersion URI 1 current version User Change date Change date 0..1 current version. No current version: Item does not exist
    30. 30. Simplified Data Model – no versioning Repository Mime-type Item Content Any binary or character stream URI 1 root item 1:1 1:* 0..1 content Addressable Triple URI URI URI URI User Change date
    31. 31. The Content API <ul><li>Repository functions: </li></ul><ul><li>Content </li></ul><ul><ul><li>Item createItem(URI) </li></ul></ul><ul><ul><li>Item createNamedItem(URI) </li></ul></ul><ul><ul><li>Item getItem(URI), </li></ul></ul><ul><ul><li>Item[] getAllItems(), </li></ul></ul><ul><ul><li>Item getRootItem(), </li></ul></ul><ul><ul><li>Item[] getChangedItemsSince(long datetime) </li></ul></ul><ul><ul><li>Item[] query( String query ) </li></ul></ul><ul><ul><ul><li>All kinds of queries … </li></ul></ul></ul><ul><li>Addressing </li></ul><ul><ul><li>URI getURI( String contentOfANamedItem ) </li></ul></ul><ul><li>Item functions </li></ul><ul><li>Content </li></ul><ul><ul><li>InputStream getContent(), putContent(InputStream in) </li></ul></ul><ul><li>Metadata </li></ul><ul><ul><li>URI, Mimetype getMimetype </li></ul></ul><ul><ul><li>User, changeDate </li></ul></ul><ul><li>Collaboration </li></ul><ul><ul><li>beginEdit(), cancelEdit() </li></ul></ul>
    32. 32. Webifying the API <ul><li>Methods returning RDF/XML. </li></ul><ul><li>For each item we always return: NamedItem or UnnamedItem, mimetype, author, changedAt, for short items: content </li></ul><ul><li>GET /items/ - all items </li></ul><ul><li>GET /items/root - the root </li></ul><ul><li>GET /items?changedSince=… </li></ul><ul><li>GET /items?query=… </li></ul><ul><ul><li>All kinds of queries .. </li></ul></ul><ul><li>GET /items?name=… </li></ul><ul><ul><li>Returns all items with that name </li></ul></ul><ul><li>Item functions </li></ul><ul><li>GET /items?uri=… </li></ul><ul><ul><li>Return content </li></ul></ul><ul><li>PUT /items=uri=… </li></ul><ul><ul><li>Store body of put request </li></ul></ul><ul><ul><li>Allow POST with same semantics </li></ul></ul><ul><li>GET /items/meta?uri=… </li></ul><ul><ul><li>Return RDF/XML with item data </li></ul></ul><ul><li>POST /items?uri=…&edit=start </li></ul><ul><li>POST /items?uri=…&edit=cancel </li></ul>
    33. 33. Next Steps <ul><li>Define the different APIs as Java interfaces: </li></ul><ul><li>A content API facade </li></ul><ul><li>Components: </li></ul><ul><ul><li>Binary store </li></ul></ul><ul><ul><li>Keyword index </li></ul></ul><ul><ul><li>RDF store </li></ul></ul><ul><ul><li>A WIF util class </li></ul></ul>
    34. 34. APPENDICES
    35. 35. Requirements from different sides
    36. 36. WAVES (sorry it‘s german) SWE-spezifische Funktionen Suche Rechte- verwaltung Orgamodell Rollen, Gruppen, .. Artikulieren, Vernetzen/Referenzieren Restrukturieren Überarbeiten Wissen kontextabh. automatisch anbieten (Freie) Sichten bilden Desktop-Integration E-Mails / Office / Browser Synchronisation (Offline, Sharing) SW-Projekt- Cockpit Polarion Anforderungs- verwaltung Meeting- Protokolle essentiell wichtig zukünftig setzt voraus Grundfunktionen Weitere allgemeine Funktionen Persönlicher Wissensspeicher
    37. 37. Existing approaches for linking XHTML and RDF <ul><li>RDFa: http://rdfa.info </li></ul><ul><li>eRDF: http://research.talis.com/2005/erdf/wiki/Main/RdfInHtml </li></ul><ul><li>Comparison: http://www.bnode.org/blog/2007/02/12/comparison-of-microformats-erdf-and-rdfa </li></ul>
    38. 38. A WIF logo WIF
    39. 39. Finding a good name <ul><li>Semantic Content Repository </li></ul><ul><li>Score </li></ul><ul><li>Secore – 40.000 hits </li></ul><ul><li>Semantic Web Content Repository </li></ul><ul><li>Swecor – 28 hits </li></ul><ul><li>Swcore – 2000 hits </li></ul><ul><li>Swecr – 10 hits </li></ul><ul><li>SWCR – 20.000 hits </li></ul>
    40. 40. Todos <ul><li>Align with </li></ul><ul><ul><li>JCR </li></ul></ul><ul><ul><li>WebDAV </li></ul></ul><ul><ul><li>SVN </li></ul></ul>
    41. 41. OLD slides kept here as a backup
    42. 42. What you can GET and PUT <ul><li>WIF file </li></ul><ul><li>Title (for offline browsing) </li></ul><ul><li>Content </li></ul><ul><ul><li>Text </li></ul></ul><ul><ul><li>Structure </li></ul></ul><ul><ul><li>Semantic annotations </li></ul></ul><ul><li>RDF file (in fact a clever query result) </li></ul><ul><li>Wiki page metadata </li></ul><ul><ul><li>Author, changeDate, Title, previousVersion, mimeType </li></ul></ul><ul><li>Semantic annotations </li></ul><ul><ul><li>Extracted from WIF, enables queries </li></ul></ul><ul><li>A global RDF model </li></ul><ul><li>Remote queries </li></ul><ul><li>Contain all page-RDFs </li></ul><ul><li>+ global statements </li></ul>XHTML WIF RDF WMO
    43. 43. First Try: Semantic Wiki Semantic Wiki Syntax DOM XHTML HTTP RDFa RDFa API WIF using WMO WAF = n WIF pages WOM + RDF Serialisation/ Standard Java API Conceptual model Structured document Semantically annotated doc. XML Wiki application Semantic Wiki Syntax Semantic Wiki Syntax User interface Semantic wiki page Complete sem. wiki content WAF API Semantic Wiki Semantic Wiki = existing Collaboration-API WEM Content Communication Knowledge model 1 RDF Model+ n WIF CDS API Exchange-API iMapping SwingClient
    44. 44. Two Content Layers <ul><li>Content blocks (aka wiki pages or CDS items) </li></ul><ul><ul><li>essential subset of XHTML </li></ul></ul><ul><ul><li>RDFa annotations for semantic annotations of parts of the content </li></ul></ul><ul><li>RDF model </li></ul><ul><ul><li>Content metadata – such as (Elephant, authoredBy, User:Max) </li></ul></ul><ul><ul><ul><li>Only in RDF model </li></ul></ul></ul><ul><ul><li>Semantic statements - such as (Elephant, livesIn, Africa) </li></ul></ul><ul><ul><ul><li>Redundant with RDFa in content. RDF data is authorative. </li></ul></ul></ul><a href=„Africa“ rel=„ex:livesIn“> Africa </a> 001011010110101010101010101110101110 binary User:Max Africa User:Mikhail „ Gray“ „ 2007-03-08“^^xsd:_date Elephant hasContent hasContent hasContent hasAuthor changeDate hasColor livesIn
    45. 45. Content Server API <ul><li>InputStream GetContent( uri ) </li></ul><ul><ul><li>Returns binary stream or WIF </li></ul></ul><ul><li>RDF query( query ) </li></ul><ul><ul><li>Query can be: a URI, a triple pattern or a SPARQL </li></ul></ul><ul><ul><li>Result can be: RDF/XML, Turtle, NTriples, JSON, … </li></ul></ul>

    ×