Metadata In Context Expander (MICE)

Ajit Jain edited this page Dec 7, 2015 · 11 revisions

Try MICE

Table of Contents

Overview

Built upon BigSemantics, MICE is a novel interface that allows you to visualize metadata from supported websites dynamically. By clicking on the plus sign (+), it also allows you to expand connected metadata in place without navigating to the page.

Getting Started with MICE

MICE is easy to use.

For example, this link allows you to see the metadata for the movie Life of Pi from IMDb. It shows information about the movie such as title, abstract, ratings, and cast. Clicking on the plus sign will cause MICE to bring in connected metadata, such as information about one of the movie's cast. Such expansion of metadata can be applied again, for example, to find movies that one actor or actress was starred in.

This link visualizes the metadata for the same movie from Wikipedia. Again, connected topics and categories can be further expanded, to bring in more metadata.

The above examples highlight some features of MICE:

  • MICE works with different types of information. In the IMDb example, it works with information about not only movies but also people. In fact, the MICE interface is driven by types, specified in the form of wrappers in BigSemantics.
  • MICE is dynamic. There is no need to prepare IMDb or Wikipedia data into a certain format in advance for MICE to work. MICE is designed to work with live Internet information.
  • MICE expands metadata in context. In contrast, with typical web browsers, when you click on a hyperlink to find relevant information, the tab reloads, or a new tab pops up. In either case, you lose the context. Maintaining context can be useful, for example, when you want to compare the cast list for different movies.
Examples:

For Developers

MICE is available as a JavaScript library. MICE allows developers to dynamically render extracted semantics into rich interactive UI components using HTML and CSS. MICE relies on debis.js to make AJAX requests to a back-end service to provide the semantics and corresponding wrapper (which contains the needed presentation rules) for a given source document URL.

View the Github project

Things to Include

To use MICE, the MICE css and js files must be included in your HTML file.

It'll probably look something like this:

<!-- CSS! --><linkhref="../BigSemanticsJavaScript/renderers/styles/metadataRenderer.css" rel="stylesheet" type="text/css"><linkhref="../BigSemanticsJavaScript/renderers/styles/twitterMICE.css" rel="stylesheet" type="text/css"><!-- bsjsCore Files --><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Readyable.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSAutoSwitch.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSService.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSExtension.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSUtils.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/MetadataTask.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/MetadataViewModel.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Readyable.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Downloader.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/ParsedURL.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Downloader.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/RepoMan.js"></script><!-- Required renderer files --><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/interfaceStyle.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/TweetBubbleRenderingTask.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/TweetBubbleRenderer.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/RendererBase.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/RenderingTask.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/twitterICE.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/ICE.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/VanillaMICE.js"></script><!-- Just the simpl things --><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/simpl/simplBase.js"></script>

Next up, you'll need to give the MICE somewhere to live on your HTML page. In the body tag, simple create a div. It could look something like this:

<body><divid="mice"></div></body>

If you want MICE to render metadata for some url as soon as the page loads, include the following HTML.

MICE.initialize() searches for all metadataRendering's and builds a MICE table for the anchor inside them.

<body><divid="content" class="metadataRendering"><ahref="http://en.wikipedia.org/wiki/Exploratory_search"></a></div><script>MICE.initialize();</script></body>

Using MICE

To give MICE a target URL and render the In-Context Expander with the metadata, you need to include a single call to the MICE in your javascript code. The addMetadataDisplay function takes five arguments:

  • The div object where you want to render MICE
  • The target URL (a string) to pull metadata from
  • Metadata to render. Use null if metadata is not already cached
  • The renderer to use for constructing the metadata visual
  • additional options e.g.
    • requestMD, true if the function should request metadata from service, else false
    • reloadMD, true if the metadata should be extracted afresh vs being pulled from the cache (if possible), else false
    • isRoot, is this the root metadata for the rendering (currently used for removing existing children)
Your javascript code to use MICE will look something like this:
varurl=http://www.amazon.com/Discovery-Daft-Punk/dp/B000059MEK/ref=sr_1_1?s=music&ie=UTF8&qid=1365793732;varcontent=document.getElementById("myMice");RendererBase.addMetadataDisplay(content,url,null,MICE.render,null);

For Twitter, use TwitterRenderer:

TwitterRenderer.addMetadataDisplay(content,url,null,TwitterRenderer.render,null);

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Metadata In Context Expander (MICE)

Ajit Jain edited this page Dec 7, 2015 · 11 revisions

Try MICE

Table of Contents

Overview

Built upon BigSemantics, MICE is a novel interface that allows you to visualize metadata from supported websites dynamically. By clicking on the plus sign (+), it also allows you to expand connected metadata in place without navigating to the page.

Getting Started with MICE

MICE is easy to use.

For example, this link allows you to see the metadata for the movie Life of Pi from IMDb. It shows information about the movie such as title, abstract, ratings, and cast. Clicking on the plus sign will cause MICE to bring in connected metadata, such as information about one of the movie's cast. Such expansion of metadata can be applied again, for example, to find movies that one actor or actress was starred in.

This link visualizes the metadata for the same movie from Wikipedia. Again, connected topics and categories can be further expanded, to bring in more metadata.

The above examples highlight some features of MICE:

  • MICE works with different types of information. In the IMDb example, it works with information about not only movies but also people. In fact, the MICE interface is driven by types, specified in the form of wrappers in BigSemantics.
  • MICE is dynamic. There is no need to prepare IMDb or Wikipedia data into a certain format in advance for MICE to work. MICE is designed to work with live Internet information.
  • MICE expands metadata in context. In contrast, with typical web browsers, when you click on a hyperlink to find relevant information, the tab reloads, or a new tab pops up. In either case, you lose the context. Maintaining context can be useful, for example, when you want to compare the cast list for different movies.
Examples:

For Developers

MICE is available as a JavaScript library. MICE allows developers to dynamically render extracted semantics into rich interactive UI components using HTML and CSS. MICE relies on debis.js to make AJAX requests to a back-end service to provide the semantics and corresponding wrapper (which contains the needed presentation rules) for a given source document URL.

View the Github project

Things to Include

To use MICE, the MICE css and js files must be included in your HTML file.

It'll probably look something like this:

<!-- CSS! --><linkhref="../BigSemanticsJavaScript/renderers/styles/metadataRenderer.css" rel="stylesheet" type="text/css"><linkhref="../BigSemanticsJavaScript/renderers/styles/twitterMICE.css" rel="stylesheet" type="text/css"><!-- bsjsCore Files --><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Readyable.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSAutoSwitch.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSService.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSExtension.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSUtils.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/MetadataTask.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/MetadataViewModel.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Readyable.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Downloader.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/ParsedURL.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Downloader.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/RepoMan.js"></script><!-- Required renderer files --><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/interfaceStyle.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/TweetBubbleRenderingTask.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/TweetBubbleRenderer.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/RendererBase.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/RenderingTask.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/twitterICE.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/ICE.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/VanillaMICE.js"></script><!-- Just the simpl things --><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/simpl/simplBase.js"></script>

Next up, you'll need to give the MICE somewhere to live on your HTML page. In the body tag, simple create a div. It could look something like this:

<body><divid="mice"></div></body>

If you want MICE to render metadata for some url as soon as the page loads, include the following HTML.

MICE.initialize() searches for all metadataRendering's and builds a MICE table for the anchor inside them.

<body><divid="content" class="metadataRendering"><ahref="http://en.wikipedia.org/wiki/Exploratory_search"></a></div><script>MICE.initialize();</script></body>

Using MICE

To give MICE a target URL and render the In-Context Expander with the metadata, you need to include a single call to the MICE in your javascript code. The addMetadataDisplay function takes five arguments:

  • The div object where you want to render MICE
  • The target URL (a string) to pull metadata from
  • Metadata to render. Use null if metadata is not already cached
  • The renderer to use for constructing the metadata visual
  • additional options e.g.
    • requestMD, true if the function should request metadata from service, else false
    • reloadMD, true if the metadata should be extracted afresh vs being pulled from the cache (if possible), else false
    • isRoot, is this the root metadata for the rendering (currently used for removing existing children)
Your javascript code to use MICE will look something like this:
varurl=http://www.amazon.com/Discovery-Daft-Punk/dp/B000059MEK/ref=sr_1_1?s=music&ie=UTF8&qid=1365793732;varcontent=document.getElementById("myMice");RendererBase.addMetadataDisplay(content,url,null,MICE.render,null);

For Twitter, use TwitterRenderer:

TwitterRenderer.addMetadataDisplay(content,url,null,TwitterRenderer.render,null);

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Metadata In Context Expander (MICE)

Ajit Jain edited this page Dec 7, 2015 · 11 revisions

Try MICE

Table of Contents

Overview

Built upon BigSemantics, MICE is a novel interface that allows you to visualize metadata from supported websites dynamically. By clicking on the plus sign (+), it also allows you to expand connected metadata in place without navigating to the page.

Getting Started with MICE

MICE is easy to use.

For example, this link allows you to see the metadata for the movie Life of Pi from IMDb. It shows information about the movie such as title, abstract, ratings, and cast. Clicking on the plus sign will cause MICE to bring in connected metadata, such as information about one of the movie's cast. Such expansion of metadata can be applied again, for example, to find movies that one actor or actress was starred in.

This link visualizes the metadata for the same movie from Wikipedia. Again, connected topics and categories can be further expanded, to bring in more metadata.

The above examples highlight some features of MICE:

  • MICE works with different types of information. In the IMDb example, it works with information about not only movies but also people. In fact, the MICE interface is driven by types, specified in the form of wrappers in BigSemantics.
  • MICE is dynamic. There is no need to prepare IMDb or Wikipedia data into a certain format in advance for MICE to work. MICE is designed to work with live Internet information.
  • MICE expands metadata in context. In contrast, with typical web browsers, when you click on a hyperlink to find relevant information, the tab reloads, or a new tab pops up. In either case, you lose the context. Maintaining context can be useful, for example, when you want to compare the cast list for different movies.
Examples:

For Developers

MICE is available as a JavaScript library. MICE allows developers to dynamically render extracted semantics into rich interactive UI components using HTML and CSS. MICE relies on debis.js to make AJAX requests to a back-end service to provide the semantics and corresponding wrapper (which contains the needed presentation rules) for a given source document URL.

View the Github project

Things to Include

To use MICE, the MICE css and js files must be included in your HTML file.

It'll probably look something like this:

<!-- CSS! --><linkhref="../BigSemanticsJavaScript/renderers/styles/metadataRenderer.css" rel="stylesheet" type="text/css"><linkhref="../BigSemanticsJavaScript/renderers/styles/twitterMICE.css" rel="stylesheet" type="text/css"><!-- bsjsCore Files --><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Readyable.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSAutoSwitch.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSService.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSExtension.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSUtils.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/MetadataTask.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/MetadataViewModel.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Readyable.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Downloader.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/ParsedURL.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Downloader.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/RepoMan.js"></script><!-- Required renderer files --><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/interfaceStyle.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/TweetBubbleRenderingTask.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/TweetBubbleRenderer.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/RendererBase.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/RenderingTask.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/twitterICE.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/ICE.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/VanillaMICE.js"></script><!-- Just the simpl things --><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/simpl/simplBase.js"></script>

Next up, you'll need to give the MICE somewhere to live on your HTML page. In the body tag, simple create a div. It could look something like this:

<body><divid="mice"></div></body>

If you want MICE to render metadata for some url as soon as the page loads, include the following HTML.

MICE.initialize() searches for all metadataRendering's and builds a MICE table for the anchor inside them.

<body><divid="content" class="metadataRendering"><ahref="http://en.wikipedia.org/wiki/Exploratory_search"></a></div><script>MICE.initialize();</script></body>

Using MICE

To give MICE a target URL and render the In-Context Expander with the metadata, you need to include a single call to the MICE in your javascript code. The addMetadataDisplay function takes five arguments:

  • The div object where you want to render MICE
  • The target URL (a string) to pull metadata from
  • Metadata to render. Use null if metadata is not already cached
  • The renderer to use for constructing the metadata visual
  • additional options e.g.
    • requestMD, true if the function should request metadata from service, else false
    • reloadMD, true if the metadata should be extracted afresh vs being pulled from the cache (if possible), else false
    • isRoot, is this the root metadata for the rendering (currently used for removing existing children)
Your javascript code to use MICE will look something like this:
varurl=http://www.amazon.com/Discovery-Daft-Punk/dp/B000059MEK/ref=sr_1_1?s=music&ie=UTF8&qid=1365793732;varcontent=document.getElementById("myMice");RendererBase.addMetadataDisplay(content,url,null,MICE.render,null);

For Twitter, use TwitterRenderer:

TwitterRenderer.addMetadataDisplay(content,url,null,TwitterRenderer.render,null);

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Metadata In Context Expander (MICE)

Ajit Jain edited this page Dec 7, 2015 · 11 revisions

Try MICE

Table of Contents

Overview

Built upon BigSemantics, MICE is a novel interface that allows you to visualize metadata from supported websites dynamically. By clicking on the plus sign (+), it also allows you to expand connected metadata in place without navigating to the page.

Getting Started with MICE

MICE is easy to use.

For example, this link allows you to see the metadata for the movie Life of Pi from IMDb. It shows information about the movie such as title, abstract, ratings, and cast. Clicking on the plus sign will cause MICE to bring in connected metadata, such as information about one of the movie's cast. Such expansion of metadata can be applied again, for example, to find movies that one actor or actress was starred in.

This link visualizes the metadata for the same movie from Wikipedia. Again, connected topics and categories can be further expanded, to bring in more metadata.

The above examples highlight some features of MICE:

  • MICE works with different types of information. In the IMDb example, it works with information about not only movies but also people. In fact, the MICE interface is driven by types, specified in the form of wrappers in BigSemantics.
  • MICE is dynamic. There is no need to prepare IMDb or Wikipedia data into a certain format in advance for MICE to work. MICE is designed to work with live Internet information.
  • MICE expands metadata in context. In contrast, with typical web browsers, when you click on a hyperlink to find relevant information, the tab reloads, or a new tab pops up. In either case, you lose the context. Maintaining context can be useful, for example, when you want to compare the cast list for different movies.
Examples:

For Developers

MICE is available as a JavaScript library. MICE allows developers to dynamically render extracted semantics into rich interactive UI components using HTML and CSS. MICE relies on debis.js to make AJAX requests to a back-end service to provide the semantics and corresponding wrapper (which contains the needed presentation rules) for a given source document URL.

View the Github project

Things to Include

To use MICE, the MICE css and js files must be included in your HTML file.

It'll probably look something like this:

<!-- CSS! --><linkhref="../BigSemanticsJavaScript/renderers/styles/metadataRenderer.css" rel="stylesheet" type="text/css"><linkhref="../BigSemanticsJavaScript/renderers/styles/twitterMICE.css" rel="stylesheet" type="text/css"><!-- bsjsCore Files --><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Readyable.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSAutoSwitch.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSService.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSExtension.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSUtils.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/MetadataTask.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/MetadataViewModel.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Readyable.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Downloader.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/ParsedURL.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Downloader.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/RepoMan.js"></script><!-- Required renderer files --><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/interfaceStyle.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/TweetBubbleRenderingTask.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/TweetBubbleRenderer.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/RendererBase.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/RenderingTask.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/twitterICE.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/ICE.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/VanillaMICE.js"></script><!-- Just the simpl things --><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/simpl/simplBase.js"></script>

Next up, you'll need to give the MICE somewhere to live on your HTML page. In the body tag, simple create a div. It could look something like this:

<body><divid="mice"></div></body>

If you want MICE to render metadata for some url as soon as the page loads, include the following HTML.

MICE.initialize() searches for all metadataRendering's and builds a MICE table for the anchor inside them.

<body><divid="content" class="metadataRendering"><ahref="http://en.wikipedia.org/wiki/Exploratory_search"></a></div><script>MICE.initialize();</script></body>

Using MICE

To give MICE a target URL and render the In-Context Expander with the metadata, you need to include a single call to the MICE in your javascript code. The addMetadataDisplay function takes five arguments:

  • The div object where you want to render MICE
  • The target URL (a string) to pull metadata from
  • Metadata to render. Use null if metadata is not already cached
  • The renderer to use for constructing the metadata visual
  • additional options e.g.
    • requestMD, true if the function should request metadata from service, else false
    • reloadMD, true if the metadata should be extracted afresh vs being pulled from the cache (if possible), else false
    • isRoot, is this the root metadata for the rendering (currently used for removing existing children)
Your javascript code to use MICE will look something like this:
varurl=http://www.amazon.com/Discovery-Daft-Punk/dp/B000059MEK/ref=sr_1_1?s=music&ie=UTF8&qid=1365793732;varcontent=document.getElementById("myMice");RendererBase.addMetadataDisplay(content,url,null,MICE.render,null);

For Twitter, use TwitterRenderer:

TwitterRenderer.addMetadataDisplay(content,url,null,TwitterRenderer.render,null);

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Metadata In Context Expander (MICE)

Ajit Jain edited this page Dec 7, 2015 · 11 revisions

Try MICE

Table of Contents

Overview

Built upon BigSemantics, MICE is a novel interface that allows you to visualize metadata from supported websites dynamically. By clicking on the plus sign (+), it also allows you to expand connected metadata in place without navigating to the page.

Getting Started with MICE

MICE is easy to use.

For example, this link allows you to see the metadata for the movie Life of Pi from IMDb. It shows information about the movie such as title, abstract, ratings, and cast. Clicking on the plus sign will cause MICE to bring in connected metadata, such as information about one of the movie's cast. Such expansion of metadata can be applied again, for example, to find movies that one actor or actress was starred in.

This link visualizes the metadata for the same movie from Wikipedia. Again, connected topics and categories can be further expanded, to bring in more metadata.

The above examples highlight some features of MICE:

  • MICE works with different types of information. In the IMDb example, it works with information about not only movies but also people. In fact, the MICE interface is driven by types, specified in the form of wrappers in BigSemantics.
  • MICE is dynamic. There is no need to prepare IMDb or Wikipedia data into a certain format in advance for MICE to work. MICE is designed to work with live Internet information.
  • MICE expands metadata in context. In contrast, with typical web browsers, when you click on a hyperlink to find relevant information, the tab reloads, or a new tab pops up. In either case, you lose the context. Maintaining context can be useful, for example, when you want to compare the cast list for different movies.
Examples:

For Developers

MICE is available as a JavaScript library. MICE allows developers to dynamically render extracted semantics into rich interactive UI components using HTML and CSS. MICE relies on debis.js to make AJAX requests to a back-end service to provide the semantics and corresponding wrapper (which contains the needed presentation rules) for a given source document URL.

View the Github project

Things to Include

To use MICE, the MICE css and js files must be included in your HTML file.

It'll probably look something like this:

<!-- CSS! --><linkhref="../BigSemanticsJavaScript/renderers/styles/metadataRenderer.css" rel="stylesheet" type="text/css"><linkhref="../BigSemanticsJavaScript/renderers/styles/twitterMICE.css" rel="stylesheet" type="text/css"><!-- bsjsCore Files --><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Readyable.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSAutoSwitch.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSService.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSExtension.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSUtils.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/MetadataTask.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/MetadataViewModel.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Readyable.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Downloader.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/ParsedURL.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Downloader.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/RepoMan.js"></script><!-- Required renderer files --><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/interfaceStyle.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/TweetBubbleRenderingTask.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/TweetBubbleRenderer.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/RendererBase.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/RenderingTask.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/twitterICE.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/ICE.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/VanillaMICE.js"></script><!-- Just the simpl things --><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/simpl/simplBase.js"></script>

Next up, you'll need to give the MICE somewhere to live on your HTML page. In the body tag, simple create a div. It could look something like this:

<body><divid="mice"></div></body>

If you want MICE to render metadata for some url as soon as the page loads, include the following HTML.

MICE.initialize() searches for all metadataRendering's and builds a MICE table for the anchor inside them.

<body><divid="content" class="metadataRendering"><ahref="http://en.wikipedia.org/wiki/Exploratory_search"></a></div><script>MICE.initialize();</script></body>

Using MICE

To give MICE a target URL and render the In-Context Expander with the metadata, you need to include a single call to the MICE in your javascript code. The addMetadataDisplay function takes five arguments:

  • The div object where you want to render MICE
  • The target URL (a string) to pull metadata from
  • Metadata to render. Use null if metadata is not already cached
  • The renderer to use for constructing the metadata visual
  • additional options e.g.
    • requestMD, true if the function should request metadata from service, else false
    • reloadMD, true if the metadata should be extracted afresh vs being pulled from the cache (if possible), else false
    • isRoot, is this the root metadata for the rendering (currently used for removing existing children)
Your javascript code to use MICE will look something like this:
varurl=http://www.amazon.com/Discovery-Daft-Punk/dp/B000059MEK/ref=sr_1_1?s=music&ie=UTF8&qid=1365793732;varcontent=document.getElementById("myMice");RendererBase.addMetadataDisplay(content,url,null,MICE.render,null);

For Twitter, use TwitterRenderer:

TwitterRenderer.addMetadataDisplay(content,url,null,TwitterRenderer.render,null);

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Metadata In Context Expander (MICE)

Ajit Jain edited this page Dec 7, 2015 · 11 revisions

Try MICE

Table of Contents

Overview

Built upon BigSemantics, MICE is a novel interface that allows you to visualize metadata from supported websites dynamically. By clicking on the plus sign (+), it also allows you to expand connected metadata in place without navigating to the page.

Getting Started with MICE

MICE is easy to use.

For example, this link allows you to see the metadata for the movie Life of Pi from IMDb. It shows information about the movie such as title, abstract, ratings, and cast. Clicking on the plus sign will cause MICE to bring in connected metadata, such as information about one of the movie's cast. Such expansion of metadata can be applied again, for example, to find movies that one actor or actress was starred in.

This link visualizes the metadata for the same movie from Wikipedia. Again, connected topics and categories can be further expanded, to bring in more metadata.

The above examples highlight some features of MICE:

  • MICE works with different types of information. In the IMDb example, it works with information about not only movies but also people. In fact, the MICE interface is driven by types, specified in the form of wrappers in BigSemantics.
  • MICE is dynamic. There is no need to prepare IMDb or Wikipedia data into a certain format in advance for MICE to work. MICE is designed to work with live Internet information.
  • MICE expands metadata in context. In contrast, with typical web browsers, when you click on a hyperlink to find relevant information, the tab reloads, or a new tab pops up. In either case, you lose the context. Maintaining context can be useful, for example, when you want to compare the cast list for different movies.
Examples:

For Developers

MICE is available as a JavaScript library. MICE allows developers to dynamically render extracted semantics into rich interactive UI components using HTML and CSS. MICE relies on debis.js to make AJAX requests to a back-end service to provide the semantics and corresponding wrapper (which contains the needed presentation rules) for a given source document URL.

View the Github project

Things to Include

To use MICE, the MICE css and js files must be included in your HTML file.

It'll probably look something like this:

<!-- CSS! --><linkhref="../BigSemanticsJavaScript/renderers/styles/metadataRenderer.css" rel="stylesheet" type="text/css"><linkhref="../BigSemanticsJavaScript/renderers/styles/twitterMICE.css" rel="stylesheet" type="text/css"><!-- bsjsCore Files --><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Readyable.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSAutoSwitch.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSService.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSExtension.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSUtils.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/MetadataTask.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/MetadataViewModel.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Readyable.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Downloader.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/ParsedURL.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Downloader.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/RepoMan.js"></script><!-- Required renderer files --><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/interfaceStyle.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/TweetBubbleRenderingTask.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/TweetBubbleRenderer.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/RendererBase.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/RenderingTask.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/twitterICE.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/ICE.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/VanillaMICE.js"></script><!-- Just the simpl things --><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/simpl/simplBase.js"></script>

Next up, you'll need to give the MICE somewhere to live on your HTML page. In the body tag, simple create a div. It could look something like this:

<body><divid="mice"></div></body>

If you want MICE to render metadata for some url as soon as the page loads, include the following HTML.

MICE.initialize() searches for all metadataRendering's and builds a MICE table for the anchor inside them.

<body><divid="content" class="metadataRendering"><ahref="http://en.wikipedia.org/wiki/Exploratory_search"></a></div><script>MICE.initialize();</script></body>

Using MICE

To give MICE a target URL and render the In-Context Expander with the metadata, you need to include a single call to the MICE in your javascript code. The addMetadataDisplay function takes five arguments:

  • The div object where you want to render MICE
  • The target URL (a string) to pull metadata from
  • Metadata to render. Use null if metadata is not already cached
  • The renderer to use for constructing the metadata visual
  • additional options e.g.
    • requestMD, true if the function should request metadata from service, else false
    • reloadMD, true if the metadata should be extracted afresh vs being pulled from the cache (if possible), else false
    • isRoot, is this the root metadata for the rendering (currently used for removing existing children)
Your javascript code to use MICE will look something like this:
varurl=http://www.amazon.com/Discovery-Daft-Punk/dp/B000059MEK/ref=sr_1_1?s=music&ie=UTF8&qid=1365793732;varcontent=document.getElementById("myMice");RendererBase.addMetadataDisplay(content,url,null,MICE.render,null);

For Twitter, use TwitterRenderer:

TwitterRenderer.addMetadataDisplay(content,url,null,TwitterRenderer.render,null);

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Metadata In Context Expander (MICE)

Ajit Jain edited this page Dec 7, 2015 · 11 revisions

Try MICE

Table of Contents

Overview

Built upon BigSemantics, MICE is a novel interface that allows you to visualize metadata from supported websites dynamically. By clicking on the plus sign (+), it also allows you to expand connected metadata in place without navigating to the page.

Getting Started with MICE

MICE is easy to use.

For example, this link allows you to see the metadata for the movie Life of Pi from IMDb. It shows information about the movie such as title, abstract, ratings, and cast. Clicking on the plus sign will cause MICE to bring in connected metadata, such as information about one of the movie's cast. Such expansion of metadata can be applied again, for example, to find movies that one actor or actress was starred in.

This link visualizes the metadata for the same movie from Wikipedia. Again, connected topics and categories can be further expanded, to bring in more metadata.

The above examples highlight some features of MICE:

  • MICE works with different types of information. In the IMDb example, it works with information about not only movies but also people. In fact, the MICE interface is driven by types, specified in the form of wrappers in BigSemantics.
  • MICE is dynamic. There is no need to prepare IMDb or Wikipedia data into a certain format in advance for MICE to work. MICE is designed to work with live Internet information.
  • MICE expands metadata in context. In contrast, with typical web browsers, when you click on a hyperlink to find relevant information, the tab reloads, or a new tab pops up. In either case, you lose the context. Maintaining context can be useful, for example, when you want to compare the cast list for different movies.
Examples:

For Developers

MICE is available as a JavaScript library. MICE allows developers to dynamically render extracted semantics into rich interactive UI components using HTML and CSS. MICE relies on debis.js to make AJAX requests to a back-end service to provide the semantics and corresponding wrapper (which contains the needed presentation rules) for a given source document URL.

View the Github project

Things to Include

To use MICE, the MICE css and js files must be included in your HTML file.

It'll probably look something like this:

<!-- CSS! --><linkhref="../BigSemanticsJavaScript/renderers/styles/metadataRenderer.css" rel="stylesheet" type="text/css"><linkhref="../BigSemanticsJavaScript/renderers/styles/twitterMICE.css" rel="stylesheet" type="text/css"><!-- bsjsCore Files --><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Readyable.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSAutoSwitch.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSService.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSExtension.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSUtils.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/MetadataTask.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/MetadataViewModel.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Readyable.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Downloader.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/ParsedURL.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Downloader.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/RepoMan.js"></script><!-- Required renderer files --><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/interfaceStyle.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/TweetBubbleRenderingTask.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/TweetBubbleRenderer.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/RendererBase.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/RenderingTask.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/twitterICE.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/ICE.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/VanillaMICE.js"></script><!-- Just the simpl things --><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/simpl/simplBase.js"></script>

Next up, you'll need to give the MICE somewhere to live on your HTML page. In the body tag, simple create a div. It could look something like this:

<body><divid="mice"></div></body>

If you want MICE to render metadata for some url as soon as the page loads, include the following HTML.

MICE.initialize() searches for all metadataRendering's and builds a MICE table for the anchor inside them.

<body><divid="content" class="metadataRendering"><ahref="http://en.wikipedia.org/wiki/Exploratory_search"></a></div><script>MICE.initialize();</script></body>

Using MICE

To give MICE a target URL and render the In-Context Expander with the metadata, you need to include a single call to the MICE in your javascript code. The addMetadataDisplay function takes five arguments:

  • The div object where you want to render MICE
  • The target URL (a string) to pull metadata from
  • Metadata to render. Use null if metadata is not already cached
  • The renderer to use for constructing the metadata visual
  • additional options e.g.
    • requestMD, true if the function should request metadata from service, else false
    • reloadMD, true if the metadata should be extracted afresh vs being pulled from the cache (if possible), else false
    • isRoot, is this the root metadata for the rendering (currently used for removing existing children)
Your javascript code to use MICE will look something like this:
varurl=http://www.amazon.com/Discovery-Daft-Punk/dp/B000059MEK/ref=sr_1_1?s=music&ie=UTF8&qid=1365793732;varcontent=document.getElementById("myMice");RendererBase.addMetadataDisplay(content,url,null,MICE.render,null);

For Twitter, use TwitterRenderer:

TwitterRenderer.addMetadataDisplay(content,url,null,TwitterRenderer.render,null);

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Metadata In Context Expander (MICE)

Ajit Jain edited this page Dec 7, 2015 · 11 revisions

Try MICE

Table of Contents

Overview

Built upon BigSemantics, MICE is a novel interface that allows you to visualize metadata from supported websites dynamically. By clicking on the plus sign (+), it also allows you to expand connected metadata in place without navigating to the page.

Getting Started with MICE

MICE is easy to use.

For example, this link allows you to see the metadata for the movie Life of Pi from IMDb. It shows information about the movie such as title, abstract, ratings, and cast. Clicking on the plus sign will cause MICE to bring in connected metadata, such as information about one of the movie's cast. Such expansion of metadata can be applied again, for example, to find movies that one actor or actress was starred in.

This link visualizes the metadata for the same movie from Wikipedia. Again, connected topics and categories can be further expanded, to bring in more metadata.

The above examples highlight some features of MICE:

  • MICE works with different types of information. In the IMDb example, it works with information about not only movies but also people. In fact, the MICE interface is driven by types, specified in the form of wrappers in BigSemantics.
  • MICE is dynamic. There is no need to prepare IMDb or Wikipedia data into a certain format in advance for MICE to work. MICE is designed to work with live Internet information.
  • MICE expands metadata in context. In contrast, with typical web browsers, when you click on a hyperlink to find relevant information, the tab reloads, or a new tab pops up. In either case, you lose the context. Maintaining context can be useful, for example, when you want to compare the cast list for different movies.
Examples:

For Developers

MICE is available as a JavaScript library. MICE allows developers to dynamically render extracted semantics into rich interactive UI components using HTML and CSS. MICE relies on debis.js to make AJAX requests to a back-end service to provide the semantics and corresponding wrapper (which contains the needed presentation rules) for a given source document URL.

View the Github project

Things to Include

To use MICE, the MICE css and js files must be included in your HTML file.

It'll probably look something like this:

<!-- CSS! --><linkhref="../BigSemanticsJavaScript/renderers/styles/metadataRenderer.css" rel="stylesheet" type="text/css"><linkhref="../BigSemanticsJavaScript/renderers/styles/twitterMICE.css" rel="stylesheet" type="text/css"><!-- bsjsCore Files --><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Readyable.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSAutoSwitch.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSService.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSExtension.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/BSUtils.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/MetadataTask.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/MetadataViewModel.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Readyable.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Downloader.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/ParsedURL.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/Downloader.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/RepoMan.js"></script><!-- Required renderer files --><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/interfaceStyle.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/TweetBubbleRenderingTask.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/TweetBubbleRenderer.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/RendererBase.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/RenderingTask.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/twitterICE.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/ICE.js"></script><scripttype="text/javascript" src="../BigSemanticsJavaScript/renderers/VanillaMICE.js"></script><!-- Just the simpl things --><scripttype="text/javascript" src="../BigSemanticsJavaScript/bsjsCore/simpl/simplBase.js"></script>

Next up, you'll need to give the MICE somewhere to live on your HTML page. In the body tag, simple create a div. It could look something like this:

<body><divid="mice"></div></body>

If you want MICE to render metadata for some url as soon as the page loads, include the following HTML.

MICE.initialize() searches for all metadataRendering's and builds a MICE table for the anchor inside them.

<body><divid="content" class="metadataRendering"><ahref="http://en.wikipedia.org/wiki/Exploratory_search"></a></div><script>MICE.initialize();</script></body>

Using MICE

To give MICE a target URL and render the In-Context Expander with the metadata, you need to include a single call to the MICE in your javascript code. The addMetadataDisplay function takes five arguments:

  • The div object where you want to render MICE
  • The target URL (a string) to pull metadata from
  • Metadata to render. Use null if metadata is not already cached
  • The renderer to use for constructing the metadata visual
  • additional options e.g.
    • requestMD, true if the function should request metadata from service, else false
    • reloadMD, true if the metadata should be extracted afresh vs being pulled from the cache (if possible), else false
    • isRoot, is this the root metadata for the rendering (currently used for removing existing children)
Your javascript code to use MICE will look something like this:
varurl=http://www.amazon.com/Discovery-Daft-Punk/dp/B000059MEK/ref=sr_1_1?s=music&ie=UTF8&qid=1365793732;varcontent=document.getElementById("myMice");RendererBase.addMetadataDisplay(content,url,null,MICE.render,null);

For Twitter, use TwitterRenderer:

TwitterRenderer.addMetadataDisplay(content,url,null,TwitterRenderer.render,null);

Clone this wiki locally